| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/browser_init.h" | 5 #include "chrome/browser/ui/browser_init.h" |
| 6 | 6 |
| 7 #include <algorithm> // For max(). | 7 #include <algorithm> // For max(). |
| 8 | 8 |
| 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" |
| 9 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 10 #include "base/environment.h" | 12 #include "base/environment.h" |
| 11 #include "base/event_recorder.h" | 13 #include "base/event_recorder.h" |
| 12 #include "base/file_path.h" | 14 #include "base/file_path.h" |
| 13 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/memory/weak_ptr.h" |
| 14 #include "base/metrics/histogram.h" | 17 #include "base/metrics/histogram.h" |
| 15 #include "base/path_service.h" | 18 #include "base/path_service.h" |
| 16 #include "base/string_number_conversions.h" | 19 #include "base/string_number_conversions.h" |
| 17 #include "base/string_split.h" | 20 #include "base/string_split.h" |
| 18 #include "base/threading/thread_restrictions.h" | 21 #include "base/threading/thread_restrictions.h" |
| 19 #include "base/utf_string_conversions.h" | 22 #include "base/utf_string_conversions.h" |
| 20 #include "chrome/browser/automation/automation_provider.h" | 23 #include "chrome/browser/automation/automation_provider.h" |
| 21 #include "chrome/browser/automation/automation_provider_list.h" | 24 #include "chrome/browser/automation/automation_provider_list.h" |
| 22 #include "chrome/browser/automation/chrome_frame_automation_provider.h" | 25 #include "chrome/browser/automation/chrome_frame_automation_provider.h" |
| 23 #include "chrome/browser/automation/testing_automation_provider.h" | 26 #include "chrome/browser/automation/testing_automation_provider.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 // The prefs to use. | 168 // The prefs to use. |
| 166 PrefService* prefs_; | 169 PrefService* prefs_; |
| 167 | 170 |
| 168 // Whether the user clicked one of the buttons. | 171 // Whether the user clicked one of the buttons. |
| 169 bool action_taken_; | 172 bool action_taken_; |
| 170 | 173 |
| 171 // Whether the info-bar should be dismissed on the next navigation. | 174 // Whether the info-bar should be dismissed on the next navigation. |
| 172 bool should_expire_; | 175 bool should_expire_; |
| 173 | 176 |
| 174 // Used to delay the expiration of the info-bar. | 177 // Used to delay the expiration of the info-bar. |
| 175 ScopedRunnableMethodFactory<DefaultBrowserInfoBarDelegate> method_factory_; | 178 base::WeakPtrFactory<DefaultBrowserInfoBarDelegate> weak_factory_; |
| 176 | 179 |
| 177 DISALLOW_COPY_AND_ASSIGN(DefaultBrowserInfoBarDelegate); | 180 DISALLOW_COPY_AND_ASSIGN(DefaultBrowserInfoBarDelegate); |
| 178 }; | 181 }; |
| 179 | 182 |
| 180 DefaultBrowserInfoBarDelegate::DefaultBrowserInfoBarDelegate( | 183 DefaultBrowserInfoBarDelegate::DefaultBrowserInfoBarDelegate( |
| 181 InfoBarTabHelper* infobar_helper, | 184 InfoBarTabHelper* infobar_helper, |
| 182 PrefService* prefs) | 185 PrefService* prefs) |
| 183 : ConfirmInfoBarDelegate(infobar_helper), | 186 : ConfirmInfoBarDelegate(infobar_helper), |
| 184 prefs_(prefs), | 187 prefs_(prefs), |
| 185 action_taken_(false), | 188 action_taken_(false), |
| 186 should_expire_(false), | 189 should_expire_(false), |
| 187 ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { | 190 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
| 188 // We want the info-bar to stick-around for few seconds and then be hidden | 191 // We want the info-bar to stick-around for few seconds and then be hidden |
| 189 // on the next navigation after that. | 192 // on the next navigation after that. |
| 190 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 193 MessageLoop::current()->PostDelayedTask( |
| 191 method_factory_.NewRunnableMethod( | 194 FROM_HERE, base::Bind(&DefaultBrowserInfoBarDelegate::AllowExpiry, |
| 192 &DefaultBrowserInfoBarDelegate::AllowExpiry), 8000); // 8 seconds. | 195 weak_factory_.GetWeakPtr()), |
| 196 8000); // 8 seconds. |
| 193 } | 197 } |
| 194 | 198 |
| 195 DefaultBrowserInfoBarDelegate::~DefaultBrowserInfoBarDelegate() { | 199 DefaultBrowserInfoBarDelegate::~DefaultBrowserInfoBarDelegate() { |
| 196 if (!action_taken_) | 200 if (!action_taken_) |
| 197 UMA_HISTOGRAM_COUNTS("DefaultBrowserWarning.Ignored", 1); | 201 UMA_HISTOGRAM_COUNTS("DefaultBrowserWarning.Ignored", 1); |
| 198 } | 202 } |
| 199 | 203 |
| 200 bool DefaultBrowserInfoBarDelegate::ShouldExpire( | 204 bool DefaultBrowserInfoBarDelegate::ShouldExpire( |
| 201 const content::LoadCommittedDetails& details) const { | 205 const content::LoadCommittedDetails& details) const { |
| 202 return details.is_navigation_to_different_page() && should_expire_; | 206 return details.is_navigation_to_different_page() && should_expire_; |
| (...skipping 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1325 // - There is a policy in control of this setting. | 1329 // - There is a policy in control of this setting. |
| 1326 if (!profile->GetPrefs()->GetBoolean(prefs::kCheckDefaultBrowser) || | 1330 if (!profile->GetPrefs()->GetBoolean(prefs::kCheckDefaultBrowser) || |
| 1327 is_first_run_) { | 1331 is_first_run_) { |
| 1328 return; | 1332 return; |
| 1329 } | 1333 } |
| 1330 if (g_browser_process->local_state()->IsManagedPreference( | 1334 if (g_browser_process->local_state()->IsManagedPreference( |
| 1331 prefs::kDefaultBrowserSettingEnabled)) { | 1335 prefs::kDefaultBrowserSettingEnabled)) { |
| 1332 if (g_browser_process->local_state()->GetBoolean( | 1336 if (g_browser_process->local_state()->GetBoolean( |
| 1333 prefs::kDefaultBrowserSettingEnabled)) { | 1337 prefs::kDefaultBrowserSettingEnabled)) { |
| 1334 BrowserThread::PostTask( | 1338 BrowserThread::PostTask( |
| 1335 BrowserThread::FILE, FROM_HERE, NewRunnableFunction( | 1339 BrowserThread::FILE, FROM_HERE, |
| 1336 &ShellIntegration::SetAsDefaultBrowser)); | 1340 base::IgnoreReturn<bool>( |
| 1341 base::Bind(&ShellIntegration::SetAsDefaultBrowser))); |
| 1337 } else { | 1342 } else { |
| 1338 // TODO(pastarmovj): We can't really do anything meaningful here yet but | 1343 // TODO(pastarmovj): We can't really do anything meaningful here yet but |
| 1339 // just prevent showing the infobar. | 1344 // just prevent showing the infobar. |
| 1340 } | 1345 } |
| 1341 return; | 1346 return; |
| 1342 } | 1347 } |
| 1343 BrowserThread::PostTask( | 1348 BrowserThread::PostTask( |
| 1344 BrowserThread::FILE, FROM_HERE, new CheckDefaultBrowserTask()); | 1349 BrowserThread::FILE, FROM_HERE, new CheckDefaultBrowserTask()); |
| 1345 } | 1350 } |
| 1346 | 1351 |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1549 if (!automation->InitializeChannel(channel_id)) | 1554 if (!automation->InitializeChannel(channel_id)) |
| 1550 return false; | 1555 return false; |
| 1551 automation->SetExpectedTabCount(expected_tabs); | 1556 automation->SetExpectedTabCount(expected_tabs); |
| 1552 | 1557 |
| 1553 AutomationProviderList* list = g_browser_process->GetAutomationProviderList(); | 1558 AutomationProviderList* list = g_browser_process->GetAutomationProviderList(); |
| 1554 DCHECK(list); | 1559 DCHECK(list); |
| 1555 list->AddProvider(automation); | 1560 list->AddProvider(automation); |
| 1556 | 1561 |
| 1557 return true; | 1562 return true; |
| 1558 } | 1563 } |
| OLD | NEW |