| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/search/instant_service.h" | 5 #include "chrome/browser/search/instant_service.h" | 
| 6 | 6 | 
| 7 #include <vector> | 7 #include <vector> | 
| 8 | 8 | 
| 9 #include "base/logging.h" | 9 #include "base/logging.h" | 
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 63   color.b = SkColorGetB(sKColor); | 63   color.b = SkColorGetB(sKColor); | 
| 64   color.a = SkColorGetA(sKColor); | 64   color.a = SkColorGetA(sKColor); | 
| 65   return color; | 65   return color; | 
| 66 } | 66 } | 
| 67 | 67 | 
| 68 }  // namespace | 68 }  // namespace | 
| 69 | 69 | 
| 70 InstantService::InstantService(Profile* profile) | 70 InstantService::InstantService(Profile* profile) | 
| 71     : profile_(profile), | 71     : profile_(profile), | 
| 72       omnibox_start_margin_(chrome::kDisableStartMargin), | 72       omnibox_start_margin_(chrome::kDisableStartMargin), | 
| 73       weak_ptr_factory_(this) { | 73       weak_ptr_factory_(this), | 
|  | 74       current_search_result_prefetch_base_url_( | 
|  | 75           chrome::GetSearchResultPrefetchBaseURL(profile_)), | 
|  | 76       default_search_engine_watcher_(this) { | 
| 74   // Stub for unit tests. | 77   // Stub for unit tests. | 
| 75   if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) | 78   if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) | 
| 76     return; | 79     return; | 
| 77 | 80 | 
|  | 81   TemplateURLService* template_url_service = | 
|  | 82       TemplateURLServiceFactory::GetForProfile(profile_); | 
|  | 83   if (template_url_service) | 
|  | 84     template_url_service->AddObserver(&default_search_engine_watcher_); | 
|  | 85 | 
| 78   ResetInstantSearchPrerenderer(); | 86   ResetInstantSearchPrerenderer(); | 
| 79 | 87 | 
| 80   registrar_.Add(this, | 88   registrar_.Add(this, | 
| 81                  content::NOTIFICATION_RENDERER_PROCESS_CREATED, | 89                  content::NOTIFICATION_RENDERER_PROCESS_CREATED, | 
| 82                  content::NotificationService::AllSources()); | 90                  content::NotificationService::AllSources()); | 
| 83   registrar_.Add(this, | 91   registrar_.Add(this, | 
| 84                  content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 92                  content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 
| 85                  content::NotificationService::AllSources()); | 93                  content::NotificationService::AllSources()); | 
| 86 | 94 | 
| 87   history::TopSites* top_sites = profile_->GetTopSites(); | 95   history::TopSites* top_sites = profile_->GetTopSites(); | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 119 | 127 | 
| 120   content::URLDataSource::Add( | 128   content::URLDataSource::Add( | 
| 121       profile_, new FaviconSource(profile_, FaviconSource::FAVICON)); | 129       profile_, new FaviconSource(profile_, FaviconSource::FAVICON)); | 
| 122   content::URLDataSource::Add(profile_, new LocalNtpSource(profile_)); | 130   content::URLDataSource::Add(profile_, new LocalNtpSource(profile_)); | 
| 123   content::URLDataSource::Add(profile_, new MostVisitedIframeSource()); | 131   content::URLDataSource::Add(profile_, new MostVisitedIframeSource()); | 
| 124   if (suggestions::SuggestionsService::IsEnabled()) { | 132   if (suggestions::SuggestionsService::IsEnabled()) { | 
| 125     content::URLDataSource::Add( | 133     content::URLDataSource::Add( | 
| 126         profile_, new suggestions::SuggestionsSource(profile_)); | 134         profile_, new suggestions::SuggestionsSource(profile_)); | 
| 127   } | 135   } | 
| 128 | 136 | 
| 129   profile_pref_registrar_.Init(profile_->GetPrefs()); |  | 
| 130   profile_pref_registrar_.Add( |  | 
| 131       prefs::kDefaultSearchProviderID, |  | 
| 132       base::Bind(&InstantService::OnDefaultSearchProviderChanged, |  | 
| 133                  base::Unretained(this))); |  | 
| 134 |  | 
| 135   registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, | 137   registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, | 
| 136                  content::Source<Profile>(profile_->GetOriginalProfile())); | 138                  content::Source<Profile>(profile_->GetOriginalProfile())); | 
| 137 } | 139 } | 
| 138 | 140 | 
| 139 InstantService::~InstantService() { | 141 InstantService::~InstantService() { | 
| 140 } | 142 } | 
| 141 | 143 | 
| 142 void InstantService::AddInstantProcess(int process_id) { | 144 void InstantService::AddInstantProcess(int process_id) { | 
| 143   process_ids_.insert(process_id); | 145   process_ids_.insert(process_id); | 
| 144 | 146 | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 193   if (!theme_info_) | 195   if (!theme_info_) | 
| 194     OnThemeChanged(ThemeServiceFactory::GetForProfile(profile_)); | 196     OnThemeChanged(ThemeServiceFactory::GetForProfile(profile_)); | 
| 195   else | 197   else | 
| 196     OnThemeChanged(NULL); | 198     OnThemeChanged(NULL); | 
| 197 } | 199 } | 
| 198 | 200 | 
| 199 void InstantService::UpdateMostVisitedItemsInfo() { | 201 void InstantService::UpdateMostVisitedItemsInfo() { | 
| 200   NotifyAboutMostVisitedItems(); | 202   NotifyAboutMostVisitedItems(); | 
| 201 } | 203 } | 
| 202 | 204 | 
|  | 205 InstantService::DefaultSearchEngineWatcher::DefaultSearchEngineWatcher( | 
|  | 206     InstantService* outer) | 
|  | 207     : outer_(outer) { | 
|  | 208 } | 
|  | 209 | 
|  | 210 void InstantService::DefaultSearchEngineWatcher::OnTemplateURLServiceChanged() { | 
|  | 211   outer_->OnTemplateURLServiceChanged(); | 
|  | 212 } | 
|  | 213 | 
| 203 void InstantService::Shutdown() { | 214 void InstantService::Shutdown() { | 
| 204   process_ids_.clear(); | 215   process_ids_.clear(); | 
| 205 | 216 | 
| 206   if (instant_io_context_.get()) { | 217   if (instant_io_context_.get()) { | 
| 207     BrowserThread::PostTask( | 218     BrowserThread::PostTask( | 
| 208         BrowserThread::IO, | 219         BrowserThread::IO, | 
| 209         FROM_HERE, | 220         FROM_HERE, | 
| 210         base::Bind(&InstantIOContext::ClearInstantProcessesOnIO, | 221         base::Bind(&InstantIOContext::ClearInstantProcessesOnIO, | 
| 211                    instant_io_context_)); | 222                    instant_io_context_)); | 
| 212   } | 223   } | 
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 422 | 433 | 
| 423   // Only the scheme changed. Ignore it since we do not prompt the user in this | 434   // Only the scheme changed. Ignore it since we do not prompt the user in this | 
| 424   // case. | 435   // case. | 
| 425   if (net::StripWWWFromHost(details->first) == | 436   if (net::StripWWWFromHost(details->first) == | 
| 426       net::StripWWWFromHost(details->second)) | 437       net::StripWWWFromHost(details->second)) | 
| 427     return; | 438     return; | 
| 428 | 439 | 
| 429   FOR_EACH_OBSERVER(InstantServiceObserver, observers_, GoogleURLUpdated()); | 440   FOR_EACH_OBSERVER(InstantServiceObserver, observers_, GoogleURLUpdated()); | 
| 430 } | 441 } | 
| 431 | 442 | 
| 432 void InstantService::OnDefaultSearchProviderChanged( | 443 void InstantService::OnTemplateURLServiceChanged() { | 
| 433     const std::string& pref_name) { |  | 
| 434   DCHECK_EQ(pref_name, std::string(prefs::kDefaultSearchProviderID)); |  | 
| 435   const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile( | 444   const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile( | 
| 436       profile_)->GetDefaultSearchProvider(); | 445       profile_)->GetDefaultSearchProvider(); | 
| 437   if (!template_url) { | 446   if (!template_url) { | 
| 438     // A NULL |template_url| could mean either this notification is sent during | 447     // A NULL |template_url| could mean either this notification is sent during | 
| 439     // the browser start up operation or the user now has no default search | 448     // the browser start up operation or the user now has no default search | 
| 440     // provider. There is no way for the user to reach this state using the | 449     // provider. There is no way for the user to reach this state using the | 
| 441     // Chrome settings. Only explicitly poking at the DB or bugs in the Sync | 450     // Chrome settings. Only explicitly poking at the DB or bugs in the Sync | 
| 442     // could cause that, neither of which we support. | 451     // could cause that, neither of which we support. | 
| 443     return; | 452     return; | 
| 444   } | 453   } | 
|  | 454   GURL new_search_result_prefetch_base_url( | 
|  | 455       chrome::GetSearchResultPrefetchBaseURL(profile_)); | 
|  | 456   if (new_search_result_prefetch_base_url == | 
|  | 457       current_search_result_prefetch_base_url_) | 
|  | 458     return; | 
|  | 459   current_search_result_prefetch_base_url_ = | 
|  | 460       new_search_result_prefetch_base_url; | 
| 445 | 461 | 
| 446   ResetInstantSearchPrerenderer(); | 462   ResetInstantSearchPrerenderer(); | 
| 447 | 463 | 
| 448   FOR_EACH_OBSERVER( | 464   FOR_EACH_OBSERVER( | 
| 449       InstantServiceObserver, observers_, DefaultSearchProviderChanged()); | 465       InstantServiceObserver, observers_, DefaultSearchProviderChanged()); | 
| 450 } | 466 } | 
| 451 | 467 | 
| 452 void InstantService::ResetInstantSearchPrerenderer() { | 468 void InstantService::ResetInstantSearchPrerenderer() { | 
| 453   if (!chrome::ShouldPrefetchSearchResults()) | 469   if (!chrome::ShouldPrefetchSearchResults()) | 
| 454     return; | 470     return; | 
| 455 | 471 | 
| 456   GURL url(chrome::GetSearchResultPrefetchBaseURL(profile_)); | 472   if (current_search_result_prefetch_base_url_.is_valid()) { | 
| 457   if (url.is_valid()) | 473     instant_prerenderer_.reset(new InstantSearchPrerenderer( | 
| 458     instant_prerenderer_.reset(new InstantSearchPrerenderer(profile_, url)); | 474         profile_, current_search_result_prefetch_base_url_)); | 
| 459   else | 475   } else { | 
| 460     instant_prerenderer_.reset(); | 476     instant_prerenderer_.reset(); | 
|  | 477   } | 
| 461 } | 478 } | 
| OLD | NEW | 
|---|