OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/google/google_url_tracker.h" | 5 #include "chrome/browser/google/google_url_tracker.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 base::TimeDelta::FromMilliseconds(kStartFetchDelayMS)); | 66 base::TimeDelta::FromMilliseconds(kStartFetchDelayMS)); |
67 } | 67 } |
68 } | 68 } |
69 | 69 |
70 GoogleURLTracker::~GoogleURLTracker() { | 70 GoogleURLTracker::~GoogleURLTracker() { |
71 // We should only reach here after any tabs and their infobars have been torn | 71 // We should only reach here after any tabs and their infobars have been torn |
72 // down. | 72 // down. |
73 DCHECK(entry_map_.empty()); | 73 DCHECK(entry_map_.empty()); |
74 } | 74 } |
75 | 75 |
76 // static | 76 void GoogleURLTracker::RequestServerCheck(bool force) { |
77 GURL GoogleURLTracker::GoogleURL(Profile* profile) { | 77 // If this instance already has a fetcher, SetNeedToFetch() is unnecessary, |
78 const GoogleURLTracker* tracker = | 78 // and changing |already_fetched_| is wrong. |
79 GoogleURLTrackerFactory::GetForProfile(profile); | 79 if (!fetcher_) { |
80 return tracker ? tracker->google_url_ : GURL(kDefaultGoogleHomepage); | |
81 } | |
82 | |
83 // static | |
84 void GoogleURLTracker::RequestServerCheck(Profile* profile, bool force) { | |
85 GoogleURLTracker* tracker = GoogleURLTrackerFactory::GetForProfile(profile); | |
86 // If the tracker already has a fetcher, SetNeedToFetch() is unnecessary, and | |
87 // changing |already_fetched_| is wrong. | |
88 if (tracker && !tracker->fetcher_) { | |
89 if (force) | 80 if (force) |
90 tracker->already_fetched_ = false; | 81 already_fetched_ = false; |
91 tracker->SetNeedToFetch(); | 82 SetNeedToFetch(); |
92 } | 83 } |
93 } | 84 } |
94 | 85 |
95 // static | 86 void GoogleURLTracker::SearchCommitted() { |
96 void GoogleURLTracker::GoogleURLSearchCommitted(Profile* profile) { | 87 if (need_to_prompt_) { |
97 GoogleURLTracker* tracker = GoogleURLTrackerFactory::GetForProfile(profile); | 88 search_committed_ = true; |
98 if (tracker) | 89 // These notifications will fire a bit later in the same call chain we're |
99 tracker->SearchCommitted(); | 90 // currently in. |
| 91 if (!client_->IsListeningForNavigationStart()) |
| 92 client_->SetListeningForNavigationStart(true); |
| 93 } |
100 } | 94 } |
101 | 95 |
102 void GoogleURLTracker::AcceptGoogleURL(bool redo_searches) { | 96 void GoogleURLTracker::AcceptGoogleURL(bool redo_searches) { |
103 GURL old_google_url = google_url_; | 97 GURL old_google_url = google_url_; |
104 google_url_ = fetched_google_url_; | 98 google_url_ = fetched_google_url_; |
105 PrefService* prefs = profile_->GetPrefs(); | 99 PrefService* prefs = profile_->GetPrefs(); |
106 prefs->SetString(prefs::kLastKnownGoogleURL, google_url_.spec()); | 100 prefs->SetString(prefs::kLastKnownGoogleURL, google_url_.spec()); |
107 prefs->SetString(prefs::kLastPromptedGoogleURL, google_url_.spec()); | 101 prefs->SetString(prefs::kLastPromptedGoogleURL, google_url_.spec()); |
108 NotifyGoogleURLUpdated(old_google_url, google_url_); | 102 NotifyGoogleURLUpdated(old_google_url, google_url_); |
109 | 103 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 net::LOAD_DO_NOT_SAVE_COOKIES); | 248 net::LOAD_DO_NOT_SAVE_COOKIES); |
255 fetcher_->SetRequestContext(profile_->GetRequestContext()); | 249 fetcher_->SetRequestContext(profile_->GetRequestContext()); |
256 | 250 |
257 // Configure to max_retries at most kMaxRetries times for 5xx errors. | 251 // Configure to max_retries at most kMaxRetries times for 5xx errors. |
258 static const int kMaxRetries = 5; | 252 static const int kMaxRetries = 5; |
259 fetcher_->SetMaxRetriesOn5xx(kMaxRetries); | 253 fetcher_->SetMaxRetriesOn5xx(kMaxRetries); |
260 | 254 |
261 fetcher_->Start(); | 255 fetcher_->Start(); |
262 } | 256 } |
263 | 257 |
264 void GoogleURLTracker::SearchCommitted() { | |
265 if (need_to_prompt_) { | |
266 search_committed_ = true; | |
267 // These notifications will fire a bit later in the same call chain we're | |
268 // currently in. | |
269 if (!client_->IsListeningForNavigationStart()) | |
270 client_->SetListeningForNavigationStart(true); | |
271 } | |
272 } | |
273 | |
274 void GoogleURLTracker::OnNavigationPending( | 258 void GoogleURLTracker::OnNavigationPending( |
275 scoped_ptr<GoogleURLTrackerNavigationHelper> nav_helper, | 259 scoped_ptr<GoogleURLTrackerNavigationHelper> nav_helper, |
276 infobars::InfoBarManager* infobar_manager, | 260 infobars::InfoBarManager* infobar_manager, |
277 int pending_id) { | 261 int pending_id) { |
278 GoogleURLTrackerMapEntry* map_entry = NULL; | 262 GoogleURLTrackerMapEntry* map_entry = NULL; |
279 | 263 |
280 EntryMap::iterator i(entry_map_.find(infobar_manager)); | 264 EntryMap::iterator i(entry_map_.find(infobar_manager)); |
281 if (i != entry_map_.end()) | 265 if (i != entry_map_.end()) |
282 map_entry = i->second; | 266 map_entry = i->second; |
283 | 267 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 } | 400 } |
417 if (client_->IsListeningForNavigationStart()) { | 401 if (client_->IsListeningForNavigationStart()) { |
418 DCHECK(!search_committed_); | 402 DCHECK(!search_committed_); |
419 client_->SetListeningForNavigationStart(false); | 403 client_->SetListeningForNavigationStart(false); |
420 } | 404 } |
421 } | 405 } |
422 | 406 |
423 void GoogleURLTracker::NotifyGoogleURLUpdated(GURL old_url, GURL new_url) { | 407 void GoogleURLTracker::NotifyGoogleURLUpdated(GURL old_url, GURL new_url) { |
424 callback_list_.Notify(old_url, new_url); | 408 callback_list_.Notify(old_url, new_url); |
425 } | 409 } |
OLD | NEW |