[email protected] | e41982a7 | 2012-11-20 07:16:51 | [diff] [blame] | 1 | // Copyright 2012 The Chromium Authors. All rights reserved. |
[email protected] | fd2b9ce | 2010-08-11 04:03:57 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
4 | |||||
[email protected] | 03bb710 | 2013-03-17 22:44:47 | [diff] [blame] | 5 | #include "chrome/browser/ui/search/instant_controller.h" |
[email protected] | fd2b9ce | 2010-08-11 04:03:57 | [diff] [blame] | 6 | |
avi | 655876a | 2015-12-25 07:18:15 | [diff] [blame] | 7 | #include <stddef.h> |
8 | |||||
Marc Treib | 5cacd24 | 2017-09-06 07:48:25 | [diff] [blame] | 9 | #include "base/bind.h" |
10 | #include "base/callback.h" | ||||
[email protected] | d58688c6 | 2013-07-03 23:09:12 | [diff] [blame] | 11 | #include "chrome/browser/profiles/profile.h" |
[email protected] | a7b8e43d | 2013-03-18 18:52:43 | [diff] [blame] | 12 | #include "chrome/browser/search/instant_service.h" |
13 | #include "chrome/browser/search/instant_service_factory.h" | ||||
Marc Treib | bfe0171 | 2017-09-26 11:49:45 | [diff] [blame] | 14 | #include "chrome/browser/search/search.h" |
Marc Treib | f4e8daff | 2017-09-27 08:40:34 | [diff] [blame] | 15 | #include "chrome/browser/ui/tabs/tab_strip_model.h" |
Marc Treib | bfe0171 | 2017-09-26 11:49:45 | [diff] [blame] | 16 | #include "chrome/common/url_constants.h" |
17 | #include "content/public/browser/navigation_details.h" | ||||
Marc Treib | 5cacd24 | 2017-09-06 07:48:25 | [diff] [blame] | 18 | #include "content/public/browser/navigation_handle.h" |
[email protected] | 3d6a895 | 2012-12-14 03:18:07 | [diff] [blame] | 19 | #include "content/public/browser/web_contents.h" |
Marc Treib | 5cacd24 | 2017-09-06 07:48:25 | [diff] [blame] | 20 | #include "content/public/browser/web_contents_observer.h" |
21 | |||||
22 | class InstantController::TabObserver : public content::WebContentsObserver { | ||||
23 | public: | ||||
Ella Ge | 4cd2538 | 2021-01-06 08:59:28 | [diff] [blame^] | 24 | TabObserver(content::WebContents* web_contents, |
25 | base::RepeatingClosure callback) | ||||
26 | : content::WebContentsObserver(web_contents), | ||||
27 | callback_(std::move(callback)) {} | ||||
Marc Treib | 5cacd24 | 2017-09-06 07:48:25 | [diff] [blame] | 28 | ~TabObserver() override = default; |
29 | |||||
30 | private: | ||||
31 | // Overridden from content::WebContentsObserver: | ||||
Marc Treib | bfe0171 | 2017-09-26 11:49:45 | [diff] [blame] | 32 | void NavigationEntryCommitted( |
33 | const content::LoadCommittedDetails& load_details) override { | ||||
34 | if (load_details.is_main_frame && search::IsInstantNTP(web_contents())) { | ||||
35 | callback_.Run(); | ||||
36 | } | ||||
37 | } | ||||
38 | |||||
Ella Ge | 4cd2538 | 2021-01-06 08:59:28 | [diff] [blame^] | 39 | base::RepeatingClosure callback_; |
Marc Treib | 5cacd24 | 2017-09-06 07:48:25 | [diff] [blame] | 40 | |
41 | DISALLOW_COPY_AND_ASSIGN(TabObserver); | ||||
42 | }; | ||||
[email protected] | fd2b9ce | 2010-08-11 04:03:57 | [diff] [blame] | 43 | |
Marc Treib | f4e8daff | 2017-09-27 08:40:34 | [diff] [blame] | 44 | InstantController::InstantController(Profile* profile, |
45 | TabStripModel* tab_strip_model) | ||||
Elly Fong-Jones | 4e3d25c7 | 2019-08-12 18:17:15 | [diff] [blame] | 46 | : profile_(profile) { |
47 | tab_strip_model->AddObserver(this); | ||||
Marc Treib | f4e8daff | 2017-09-27 08:40:34 | [diff] [blame] | 48 | } |
Marc Treib | bfe0171 | 2017-09-26 11:49:45 | [diff] [blame] | 49 | |
50 | InstantController::~InstantController() = default; | ||||
51 | |||||
sangwoo.ko | 1ae265f1 | 2018-10-18 08:30:28 | [diff] [blame] | 52 | void InstantController::OnTabStripModelChanged( |
53 | TabStripModel* tab_strip_model, | ||||
54 | const TabStripModelChange& change, | ||||
55 | const TabStripSelectionChange& selection) { | ||||