| Index: chrome/browser/ui/webui/options/browser_options_handler.cc
|
| ===================================================================
|
| --- chrome/browser/ui/webui/options/browser_options_handler.cc (revision 114230)
|
| +++ chrome/browser/ui/webui/options/browser_options_handler.cc (working copy)
|
| @@ -8,9 +8,11 @@
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| #include "base/memory/singleton.h"
|
| +#include "base/path_service.h"
|
| #include "base/string_number_conversions.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/auto_launch_trial.h"
|
| #include "chrome/browser/autocomplete/autocomplete.h"
|
| #include "chrome/browser/autocomplete/autocomplete_match.h"
|
| #include "chrome/browser/browser_process.h"
|
| @@ -37,8 +39,17 @@
|
| #include "grit/generated_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
|
|
| +#if defined(OS_WIN)
|
| +#include "chrome/installer/util/auto_launch_util.h"
|
| +#endif
|
| +
|
| +using content::BrowserThread;
|
| +
|
| BrowserOptionsHandler::BrowserOptionsHandler()
|
| - : template_url_service_(NULL), startup_custom_pages_table_model_(NULL) {
|
| + : template_url_service_(NULL),
|
| + startup_custom_pages_table_model_(NULL),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_for_file_(this)),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_for_ui_(this)) {
|
| #if !defined(OS_MACOSX)
|
| default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this);
|
| #endif
|
| @@ -90,6 +101,9 @@
|
| localized_strings->SetString("defaultBrowserUseAsDefault",
|
| l10n_util::GetStringFUTF16(IDS_OPTIONS_DEFAULTBROWSER_USEASDEFAULT,
|
| l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
|
| + localized_strings->SetString("autoLaunchText",
|
| + l10n_util::GetStringFUTF16(IDS_AUTOLAUNCH_TEXT,
|
| + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
|
| }
|
|
|
| void BrowserOptionsHandler::RegisterMessages() {
|
| @@ -152,8 +166,49 @@
|
| UpdateSearchEngines();
|
|
|
| autocomplete_controller_.reset(new AutocompleteController(profile, this));
|
| +
|
| +#if defined(OS_WIN)
|
| + BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| + base::Bind(&BrowserOptionsHandler::CheckAutoLaunch,
|
| + weak_ptr_factory_for_ui_.GetWeakPtr(),
|
| + weak_ptr_factory_for_file_.GetWeakPtr()));
|
| + weak_ptr_factory_for_ui_.DetachFromThread();
|
| +#endif
|
| }
|
|
|
| +void BrowserOptionsHandler::CheckAutoLaunch(
|
| + base::WeakPtr<BrowserOptionsHandler> weak_this) {
|
| +#if defined(OS_WIN)
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| +
|
| + // Pass in weak pointer to this to avoid race if BrowserOptionsHandler is
|
| + // deleted.
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&BrowserOptionsHandler::CheckAutoLaunchCallback,
|
| + weak_this,
|
| + auto_launch_trial::IsInAutoLaunchGroup(),
|
| + auto_launch_util::WillLaunchAtLogin(FilePath())));
|
| +#endif
|
| +}
|
| +
|
| +void BrowserOptionsHandler::CheckAutoLaunchCallback(
|
| + bool is_in_auto_launch_group,
|
| + bool will_launch_at_login) {
|
| +#if defined(OS_WIN)
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| +
|
| + if (is_in_auto_launch_group) {
|
| + web_ui_->RegisterMessageCallback("toggleAutoLaunch",
|
| + base::Bind(&BrowserOptionsHandler::ToggleAutoLaunch,
|
| + base::Unretained(this)));
|
| +
|
| + base::FundamentalValue enabled(will_launch_at_login);
|
| + web_ui_->CallJavascriptFunction("BrowserOptions.updateAutoLaunchState",
|
| + enabled);
|
| + }
|
| +#endif
|
| +}
|
| +
|
| void BrowserOptionsHandler::UpdateDefaultBrowserState() {
|
| // Check for side-by-side first.
|
| if (!ShellIntegration::CanSetAsDefaultBrowser()) {
|
| @@ -461,6 +516,23 @@
|
| InstantController::Disable(Profile::FromWebUI(web_ui_));
|
| }
|
|
|
| +void BrowserOptionsHandler::ToggleAutoLaunch(const ListValue* args) {
|
| +#if defined(OS_WIN)
|
| + if (!auto_launch_trial::IsInAutoLaunchGroup())
|
| + return;
|
| +
|
| + bool enable;
|
| + CHECK_EQ(args->GetSize(), 1U);
|
| + CHECK(args->GetBoolean(0, &enable));
|
| +
|
| + // Make sure we keep track of how many disable and how many enable.
|
| + auto_launch_trial::UpdateToggleAutoLaunchMetric(enable);
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::FILE, FROM_HERE,
|
| + base::Bind(&auto_launch_util::SetWillLaunchAtLogin, enable, FilePath()));
|
| +#endif // OS_WIN
|
| +}
|
| +
|
| void BrowserOptionsHandler::GetInstantFieldTrialStatus(const ListValue* args) {
|
| Profile* profile = Profile::FromWebUI(web_ui_);
|
| base::FundamentalValue enabled(
|
|
|