15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/browser_options_handler.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind_helpers.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/environment.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/singleton.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/metrics/field_trial.h" 16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/metrics/histogram.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/prefs/scoped_user_pref_update.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stl_util.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/value_conversions.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/auto_launch_trial.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chrome_page_zoom.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/custom_home_pages_table_model.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/download/download_prefs.h" 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/gpu/gpu_mode_manager.h" 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/lifetime/application_lifetime.h" 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/metrics/metrics_reporting_state.h" 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/net/prediction_options.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/session_startup_pref.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h" 39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/browser/profiles/profile_avatar_icon_util.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h" 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/profiles/profile_metrics.h" 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_shortcut_manager.h" 459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profile_window.h" 469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profiles_state.h" 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/search/hotword_service.h" 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/search/hotword_service_factory.h" 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search/search.h" 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/signin/easy_unlock_service.h" 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/signin/signin_manager_factory.h" 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service.h" 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_factory.h" 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/sync_ui_util.h" 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/themes/theme_service.h" 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/themes/theme_service_factory.h" 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_finder.h" 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/chrome_select_file_policy.h" 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/host_desktop.h" 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/favicon_source.h" 6268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/browser/ui/webui/options/options_handlers_helper.h" 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_constants.h" 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h" 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/common/extensions/extension_constants.h" 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/chromium_strings.h" 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/locale_settings.h" 722385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chromeos/chromeos_switches.h" 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url.h" 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service.h" 75e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/signin/core/common/profile_management_switches.h" 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/user_manager/user_type.h" 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/download_manager.h" 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h" 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_details.h" 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_source.h" 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_types.h" 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/url_data_source.h" 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/user_metrics.h" 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_zoom.h" 89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/browser/extension_registry.h" 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "google_apis/gaia/gaia_auth_util.h" 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "google_apis/gaia/google_service_auth_error.h" 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/base/webui/web_ui_util.h" 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/advanced_options_utils.h" 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1018bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "ash/ash_switches.h" 102c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/desktop_background/user_wallpaper_delegate.h" 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/magnifier/magnifier_constants.h" 104c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/shell.h" 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/browser_process_platform_part.h" 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/accessibility/accessibility_util.h" 10723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/chromeos/chromeos_utils.h" 108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h" 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/profiles/profile_helper.h" 111effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/chromeos/reset/metrics.h" 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 1130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/system/timezone_util.h" 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/policy/profile_policy_connector.h" 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/policy/profile_policy_connector_factory.h" 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/power_manager_client.h" 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_map.h" 120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_namespace.h" 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_service.h" 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h" 1236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager.h" 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "policy/policy_constants.h" 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h" 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 129c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/browser/extensions/settings_api_helpers.h" 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/auto_launch_util.h" 131010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/public/browser/browser_url_handler.h" 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 1354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/local_discovery/privet_notifications.h" 1364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::UserMetricsAction; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserContext; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::DownloadManager; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::OpenURLParams; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::Referrer; 144010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)using extensions::Extension; 145010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)using extensions::ExtensionRegistry; 146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace { 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_WIN) 150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void AppendExtensionData(const std::string& key, 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension, 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::DictionaryValue* dict) { 153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue); 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) details->SetString("id", extension ? extension->id() : std::string()); 155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) details->SetString("name", extension ? extension->name() : std::string()); 156010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) dict->Set(key, details.release()); 157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 158010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif // defined(OS_WIN) 159010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 160010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options { 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserOptionsHandler::BrowserOptionsHandler() 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : page_initialized_(false), 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_(NULL), 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cloud_print_mdns_ui_enabled_(false), 168effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch signin_observer_(this), 16968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) weak_ptr_factory_(this) { 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this); 171c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 17223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 1736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) cloud_print_mdns_ui_enabled_ = true; 17423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // defined(ENABLE_SERVICE_DISCOVERY) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserOptionsHandler::~BrowserOptionsHandler() { 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncService* sync_service(ProfileSyncServiceFactory:: 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetInstance()->GetForProfile(Profile::FromWebUI(web_ui()))); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sync_service) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_service->RemoveObserver(this); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_browser_worker_.get()) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->ObserverDestroyed(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (template_url_service_) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->RemoveObserver(this); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // There may be pending file dialogs, we need to tell them that we've gone 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // away so they don't try and call back to us. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (select_folder_dialog_.get()) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_->ListenerDestroyed(); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::GetLocalizedValues(base::DictionaryValue* values) { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(values); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#if defined(OS_CHROMEOS) 19703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const int device_type_resource_id = chromeos::GetChromeDeviceTypeResourceId(); 19803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#else 19903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // TODO(isherman): Set an appropriate device name for non-ChromeOS devices. 20003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const int device_type_resource_id = IDS_EASY_UNLOCK_GENERIC_DEVICE_TYPE; 20103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 20203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static OptionsStringResource resources[] = { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleCloudPrint", IDS_GOOGLE_CLOUD_PRINT }, 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "currentUserOnly", IDS_OPTIONS_CURRENT_USER_ONLY }, 2060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { "advancedSectionTitleCertificates", 2070529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch IDS_OPTIONS_ADVANCED_SECTION_TITLE_CERTIFICATES }, 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleContent", 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT }, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleLanguages", 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_LANGUAGES }, 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleNetwork", 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_NETWORK }, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitlePrivacy", 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY }, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autofillEnabled", IDS_OPTIONS_AUTOFILL_ENABLE }, 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autologinEnabled", IDS_OPTIONS_PASSWORDS_AUTOLOGIN }, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autoOpenFileTypesInfo", IDS_OPTIONS_OPEN_FILE_TYPES_AUTOMATICALLY }, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autoOpenFileTypesResetToDefault", 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT }, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "changeHomePage", IDS_OPTIONS_CHANGE_HOME_PAGE }, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "certificatesManageButton", IDS_OPTIONS_CERTIFICATES_MANAGE_BUTTON }, 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "customizeSync", IDS_OPTIONS_CUSTOMIZE_SYNC_BUTTON_LABEL }, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultFontSizeLabel", IDS_OPTIONS_DEFAULT_FONT_SIZE_LABEL }, 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultSearchManageEngines", IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES }, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultZoomFactorLabel", IDS_OPTIONS_DEFAULT_ZOOM_LEVEL_LABEL }, 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "disableGData", IDS_OPTIONS_DISABLE_GDATA }, 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "disableWebServices", IDS_OPTIONS_DISABLE_WEB_SERVICES }, 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "displayOptions", 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_BUTTON_LABEL }, 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrack", IDS_OPTIONS_ENABLE_DO_NOT_TRACK }, 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmMessage", IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_TEXT }, 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmEnable", 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_ENABLE }, 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmDisable", 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_DISABLE }, 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationAskForSaveLocation", 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_ASKFORSAVELOCATION }, 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationBrowseTitle", 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE }, 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationChangeButton", 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_CHANGE_BUTTON }, 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationGroupName", IDS_OPTIONS_DOWNLOADLOCATION_GROUP_NAME }, 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "enableLogging", IDS_OPTIONS_ENABLE_LOGGING }, 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "metricsReportingResetRestart", IDS_OPTIONS_ENABLE_LOGGING_RESTART }, 25003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) { "easyUnlockDescription", IDS_OPTIONS_EASY_UNLOCK_DESCRIPTION, 25103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) device_type_resource_id }, 25223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { "easyUnlockSectionTitle", IDS_OPTIONS_EASY_UNLOCK_SECTION_TITLE }, 25323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { "easyUnlockSetupButton", IDS_OPTIONS_EASY_UNLOCK_SETUP_BUTTON }, 25403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) { "easyUnlockSetupIntro", IDS_OPTIONS_EASY_UNLOCK_SETUP_INTRO, 25503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) device_type_resource_id }, 256c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch { "extensionControlled", IDS_OPTIONS_TAB_EXTENSION_CONTROLLED }, 257c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch { "extensionDisable", IDS_OPTIONS_TAB_EXTENSION_CONTROLLED_DISABLE }, 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsCustomizeFontsButton", 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_FONTSETTINGS_CUSTOMIZE_FONTS_BUTTON }, 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelCustom", IDS_OPTIONS_FONT_SIZE_LABEL_CUSTOM }, 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelLarge", IDS_OPTIONS_FONT_SIZE_LABEL_LARGE }, 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelMedium", IDS_OPTIONS_FONT_SIZE_LABEL_MEDIUM }, 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelSmall", IDS_OPTIONS_FONT_SIZE_LABEL_SMALL }, 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelVeryLarge", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_LARGE }, 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelVerySmall", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_SMALL }, 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "hideAdvancedSettings", IDS_SETTINGS_HIDE_ADVANCED_SETTINGS }, 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageNtp", IDS_OPTIONS_HOMEPAGE_NTP }, 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON }, 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageUseNewTab", IDS_OPTIONS_HOMEPAGE_USE_NEWTAB }, 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageUseURL", IDS_OPTIONS_HOMEPAGE_USE_URL }, 2716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "hotwordAlwaysOnSearchEnable", IDS_HOTWORD_ALWAYS_ON_SEARCH_PREF_CHKBOX }, 2726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "hotwordAudioHistoryEnable", IDS_HOTWORD_AUDIO_HISTORY_PREF_CHKBOX }, 2735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordSearchEnable", IDS_HOTWORD_SEARCH_PREF_CHKBOX }, 2745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmEnable", IDS_HOTWORD_CONFIRM_BUBBLE_ENABLE }, 2755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmDisable", IDS_HOTWORD_CONFIRM_BUBBLE_DISABLE }, 2765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmMessage", IDS_HOTWORD_SEARCH_PREF_DESCRIPTION }, 277effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch { "hotwordAudioLoggingEnable", IDS_HOTWORD_AUDIO_LOGGING_ENABLE }, 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "importData", IDS_OPTIONS_IMPORT_DATA_BUTTON }, 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "improveBrowsingExperience", IDS_OPTIONS_IMPROVE_BROWSING_EXPERIENCE }, 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "languageAndSpellCheckSettingsButton", 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGE_AND_INPUT_SETTINGS }, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "linkDoctorPref", IDS_OPTIONS_LINKDOCTOR_PREF }, 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "manageAutofillSettings", IDS_OPTIONS_MANAGE_AUTOFILL_SETTINGS_LINK }, 284868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) { "manageLanguages", IDS_OPTIONS_TRANSLATE_MANAGE_LANGUAGES }, 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "managePasswords", IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK }, 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "networkPredictionEnabledDescription", 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_NETWORK_PREDICTION_ENABLED_DESCRIPTION }, 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "passwordsAndAutofillGroupName", 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_PASSWORDS_AND_FORMS_GROUP_NAME }, 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "passwordManagerEnabled", IDS_OPTIONS_PASSWORD_MANAGER_ENABLE }, 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "privacyClearDataButton", IDS_OPTIONS_PRIVACY_CLEAR_DATA_BUTTON }, 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "privacyContentSettingsButton", 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_PRIVACY_CONTENT_SETTINGS_BUTTON }, 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "profileAddPersonEnable", IDS_PROFILE_ADD_PERSON_ENABLE }, 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "profileBrowserGuestEnable", IDS_PROFILE_BROWSER_GUEST_ENABLE }, 29634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) { "profilesCreate", IDS_PROFILES_CREATE_BUTTON_LABEL }, 29734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) { "profilesDelete", IDS_PROFILES_DELETE_BUTTON_LABEL }, 29834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) { "profilesDeleteSingle", IDS_PROFILES_DELETE_SINGLE_BUTTON_LABEL }, 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "profilesListItemCurrent", IDS_PROFILES_LIST_ITEM_CURRENT }, 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "profilesManage", IDS_PROFILES_MANAGE_BUTTON_LABEL }, 3010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { "profilesSupervisedDashboardTip", 3020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) IDS_PROFILES_SUPERVISED_USER_DASHBOARD_TIP }, 3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_SETTINGS_APP) 3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesAppListSwitch", IDS_SETTINGS_APP_PROFILES_SWITCH_BUTTON_LABEL }, 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelExtension", IDS_OPTIONS_EXTENSION_PROXIES_LABEL }, 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelSystem", IDS_OPTIONS_SYSTEM_PROXIES_LABEL, 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 30990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettings", IDS_RESET_PROFILE_SETTINGS_BUTTON }, 31090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettingsDescription", 31190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_RESET_PROFILE_SETTINGS_DESCRIPTION }, 31290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettingsSectionTitle", 31390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_RESET_PROFILE_SETTINGS_SECTION_TITLE }, 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "safeBrowsingEnableProtection", 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION }, 316f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "safeBrowsingEnableExtendedReporting", 317f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SAFEBROWSING_ENABLE_EXTENDED_REPORTING }, 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleAppearance", IDS_APPEARANCE_GROUP_NAME }, 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleDefaultBrowser", IDS_OPTIONS_DEFAULTBROWSER_GROUP_NAME }, 32034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) { "sectionTitleUsers", IDS_PROFILES_OPTIONS_GROUP_NAME }, 32146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) { "sectionTitleProxy", IDS_OPTIONS_PROXY_GROUP_NAME }, 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleSearch", IDS_OPTIONS_DEFAULTSEARCH_GROUP_NAME }, 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleStartup", IDS_OPTIONS_STARTUP_GROUP_NAME }, 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleSync", IDS_SYNC_OPTIONS_GROUP_NAME }, 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "sectionTitleVoice", IDS_OPTIONS_VOICE_GROUP_NAME }, 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "settingsTitle", IDS_SETTINGS_TITLE }, 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "showAdvancedSettings", IDS_SETTINGS_SHOW_ADVANCED_SETTINGS }, 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmMessage", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_TEXT }, 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmEnable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_ENABLE }, 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmDisable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_DISABLE }, 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingPref", IDS_OPTIONS_SPELLING_PREF }, 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupRestoreLastSession", IDS_OPTIONS_STARTUP_RESTORE_LAST_SESSION }, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupSetPages", IDS_OPTIONS_STARTUP_SET_PAGES }, 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupShowNewTab", IDS_OPTIONS_STARTUP_SHOW_NEWTAB }, 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupShowPages", IDS_OPTIONS_STARTUP_SHOW_PAGES }, 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "suggestPref", IDS_OPTIONS_SUGGEST_PREF }, 3376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "supervisedUserLabel", IDS_PROFILES_LIST_SUPERVISED_USER_LABEL }, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextInProgress", IDS_SYNC_NTP_SETUP_IN_PROGRESS }, 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextStop", IDS_SYNC_STOP_SYNCING_BUTTON_LABEL }, 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesGallery", IDS_THEMES_GALLERY_BUTTON }, 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesGalleryURL", IDS_THEMES_GALLERY_URL }, 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "tabsToLinksPref", IDS_OPTIONS_TABS_TO_LINKS_PREF }, 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "toolbarShowBookmarksBar", IDS_OPTIONS_TOOLBAR_SHOW_BOOKMARKS_BAR }, 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "toolbarShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON }, 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "translateEnableTranslate", 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_TRANSLATE_ENABLE_TRANSLATE }, 347eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS }, 349eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch { "themesNativeButton", IDS_THEMES_GTK_BUTTON }, 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesSetClassic", IDS_THEMES_SET_CLASSIC }, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themes", IDS_THEMES_GROUP_NAME }, 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 354558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch { "themesReset", IDS_THEMES_RESET_BUTTON }, 3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "accessibilityTitle", 3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_OPTIONS_SETTINGS_SECTION_TITLE_ACCESSIBILITY }, 3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "accessibilityFeaturesLink", 3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_OPTIONS_ACCESSIBILITY_FEATURES_LINK }, 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityExplanation", 3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_EXPLANATION }, 362a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) { "accessibilitySettings", 363a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SETTINGS }, 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityHighContrast", 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_HIGH_CONTRAST_DESCRIPTION }, 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityScreenMagnifier", 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_DESCRIPTION }, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityTapDragging", 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_TOUCHPAD_TAP_DRAGGING_DESCRIPTION }, 3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierOff", 3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_OFF }, 3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierFull", 3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_FULL }, 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierPartial", 3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_PARTIAL }, 376868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) { "accessibilityLargeCursor", 377868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_LARGE_CURSOR_DESCRIPTION }, 378a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch { "accessibilityStickyKeys", 379a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch IDS_OPTIONS_SETTINGS_ACCESSIBILITY_STICKY_KEYS_DESCRIPTION }, 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilitySpokenFeedback", 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SPOKEN_FEEDBACK_DESCRIPTION }, 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityVirtualKeyboard", 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_VIRTUAL_KEYBOARD_DESCRIPTION }, 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityAlwaysShowMenu", 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SHOULD_ALWAYS_SHOW_MENU }, 3868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "accessibilityAutoclick", 3878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DESCRIPTION }, 3888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "accessibilityAutoclickDropdown", 3898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DROPDOWN_DESCRIPTION }, 3908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayExtremelyShort", 3918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_EXTREMELY_SHORT }, 3928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayVeryShort", 3938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_VERY_SHORT }, 3948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayShort", 3958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_SHORT }, 3968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayLong", 3978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_LONG }, 3988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayVeryLong", 3998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_VERY_LONG }, 400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "consumerManagementDescription", 401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_DESCRIPTION }, 4020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { "consumerManagementEnrollButton", 4030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_ENROLL_BUTTON }, 4041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "consumerManagementEnrollingButton", 4051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_OPTIONS_CONSUMER_MANAGEMENT_ENROLLING_BUTTON }, 406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "consumerManagementUnenrollButton", 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_UNENROLL_BUTTON }, 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "consumerManagementUnenrollingButton", 4091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_OPTIONS_CONSUMER_MANAGEMENT_UNENROLLING_BUTTON }, 410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "deviceControlTitle", IDS_OPTIONS_DEVICE_CONTROL_SECTION_TITLE }, 4114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) { "enableContentProtectionAttestation", 4124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) IDS_OPTIONS_ENABLE_CONTENT_PROTECTION_ATTESTATION }, 4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetHeading", IDS_OPTIONS_FACTORY_RESET_HEADING }, 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetTitle", IDS_OPTIONS_FACTORY_RESET }, 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetRestart", IDS_OPTIONS_FACTORY_RESET_BUTTON }, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetDataRestart", IDS_RELAUNCH_BUTTON }, 4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetWarning", IDS_OPTIONS_FACTORY_RESET_WARNING }, 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetHelpUrl", IDS_FACTORY_RESET_HELP_URL }, 419f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { "changePicture", IDS_OPTIONS_CHANGE_PICTURE }, 420f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { "changePictureCaption", IDS_OPTIONS_CHANGE_PICTURE_CAPTION }, 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "datetimeTitle", IDS_OPTIONS_SETTINGS_SECTION_TITLE_DATETIME }, 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "deviceGroupDescription", IDS_OPTIONS_DEVICE_GROUP_DESCRIPTION }, 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "deviceGroupPointer", IDS_OPTIONS_DEVICE_GROUP_POINTER_SECTION }, 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "mouseSpeed", IDS_OPTIONS_SETTINGS_MOUSE_SPEED_DESCRIPTION }, 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "touchpadSpeed", IDS_OPTIONS_SETTINGS_TOUCHPAD_SPEED_DESCRIPTION }, 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "enableScreenlock", IDS_OPTIONS_ENABLE_SCREENLOCKER_CHECKBOX }, 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "internetOptionsButtonTitle", IDS_OPTIONS_INTERNET_OPTIONS_BUTTON_TITLE }, 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "keyboardSettingsButtonTitle", 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DEVICE_GROUP_KEYBOARD_SETTINGS_BUTTON_TITLE }, 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "manageAccountsButtonTitle", IDS_OPTIONS_ACCOUNTS_BUTTON_TITLE }, 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "noPointingDevices", IDS_OPTIONS_NO_POINTING_DEVICES }, 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleDevice", IDS_OPTIONS_DEVICE_GROUP_NAME }, 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleInternet", IDS_OPTIONS_INTERNET_OPTIONS_GROUP_LABEL }, 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncOverview", IDS_SYNC_OVERVIEW }, 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL }, 436f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmEnable", IDS_OK }, 437f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmDisable", IDS_CANCEL }, 438f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmMessage", 439f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGES_THIRD_PARTY_WARNING_MESSAGE }, 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "timezone", IDS_OPTIONS_SETTINGS_TIMEZONE_DESCRIPTION }, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "use24HourClock", IDS_OPTIONS_SETTINGS_USE_24HOUR_CLOCK_DESCRIPTION }, 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "batteryButton", IDS_OPTIONS_SETTINGS_BATTERY_DESCRIPTION}, 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { "storageButton", IDS_OPTIONS_SETTINGS_STORAGE_DESCRIPTION}, 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "proxiesConfigureButton", IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON }, 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) && defined(USE_ASH) 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "setWallpaper", IDS_SET_WALLPAPER_BUTTON }, 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "advancedSectionTitleSystem", 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_SYSTEM }, 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS) 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "backgroundModeCheckbox", IDS_OPTIONS_SYSTEM_ENABLE_BACKGROUND_MODE }, 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_CHROMEOS) 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "gpuModeCheckbox", 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE }, 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "gpuModeResetRestart", 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE_RESTART }, 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Strings with product-name substitutions. 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncOverview", IDS_SYNC_OVERVIEW, IDS_PRODUCT_NAME }, 46290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL }, 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 46490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "syncButtonTextSignIn", IDS_SYNC_START_SYNC_BUTTON_LABEL, 46590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 4662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesSingleUser", IDS_PROFILES_SINGLE_USER_MESSAGE, 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "defaultBrowserUnknown", IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN, 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 4705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "defaultBrowserUseAsDefault", IDS_OPTIONS_DEFAULTBROWSER_USEASDEFAULT }, 4715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "autoLaunchText", IDS_AUTOLAUNCH_TEXT }, 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetDescription", IDS_OPTIONS_FACTORY_RESET_DESCRIPTION, 4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "languageSectionLabel", IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL, 4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 47823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 47968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) { "cloudPrintDevicesPageButton", IDS_LOCAL_DISCOVERY_DEVICES_PAGE_BUTTON }, 48068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) { "cloudPrintEnableNotificationsLabel", 48168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_LOCAL_DISCOVERY_NOTIFICATIONS_ENABLE_CHECKBOX_LABEL }, 48268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_SETTINGS_APP) 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static OptionsStringResource app_resources[] = { 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncOverview", IDS_SETTINGS_APP_SYNC_OVERVIEW }, 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_START_SYNC_BUTTON_LABEL, 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesSingleUser", IDS_PROFILES_SINGLE_USER_MESSAGE, 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "languageSectionLabel", IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL, 4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelSystem", IDS_OPTIONS_SYSTEM_PROXIES_LABEL, 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* app_values = NULL; 4982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CHECK(values->GetDictionary(kSettingsAppKey, &app_values)); 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterStrings(app_values, app_resources, arraysize(app_resources)); 5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterStrings(values, resources, arraysize(resources)); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterTitle(values, "doNotTrackConfirmOverlay", 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_TITLE); 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterTitle(values, "spellingConfirmOverlay", 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_CONTENT_CONTEXT_SPELLING_ASK_GOOGLE); 507c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#if defined(ENABLE_FULL_PRINTING) 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterCloudPrintValues(values); 509c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("syncLearnMoreURL", chrome::kSyncLearnMoreURL); 5125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 omnibox_url = base::ASCIIToUTF16(chrome::kOmniboxLearnMoreURL); 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString( 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultSearchGroupLabel", 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16(IDS_SEARCH_PREF_EXPLANATION, omnibox_url)); 5165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("hotwordLearnMoreURL", chrome::kHotwordLearnMoreURL); 5175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RegisterTitle(values, "hotwordConfirmOverlay", 518effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch IDS_HOTWORD_CONFIRM_BUBBLE_TITLE); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 521f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 5225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string username = profile->GetProfileName(); 5235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (username.empty()) { 5245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::User* user = 525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos::ProfileHelper::Get()->GetUserByProfile(profile); 526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (user && (user->GetType() != user_manager::USER_TYPE_GUEST)) 5275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) username = user->email(); 5285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 5295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!username.empty()) 5305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) username = gaia::SanitizeEmail(gaia::CanonicalizeEmail(username)); 5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 532f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) values->SetString("username", username); 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pass along sync status early so it will be available during page init. 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->Set("syncData", GetSyncStateDictionary().release()); 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("privacyLearnMoreURL", chrome::kPrivacyLearnMoreURL); 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("doNotTrackLearnMoreURL", chrome::kDoNotTrackLearnMoreURL); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_CHROMEOS) 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci values->SetBoolean("metricsReportingEnabledAtStart", 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ChromeMetricsServiceAccessor::IsMetricsReportingEnabled()); 5445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 5455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(pastarmovj): replace this with a call to the CrosSettings list 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // handling functionality to come. 5490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) values->Set("timezoneList", chromeos::system::GetTimezoneList().release()); 5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->SetString("accessibilityLearnMoreURL", 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::kChromeAccessibilityHelpURL); 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 554a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::string settings_url = std::string("chrome-extension://") + 555a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) extension_misc::kChromeVoxExtensionId + 556a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::kChromeAccessibilitySettingsURL; 557a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 558a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) values->SetString("accessibilitySettingsURL", 559a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) settings_url); 560a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) values->SetString("contentProtectionAttestationLearnMoreURL", 5624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome::kAttestationForContentProtectionLearnMoreURL); 5634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates magnifierList. 5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> magnifier_list(new base::ListValue); 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> option_full(new base::ListValue); 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_full->AppendInteger(ash::MAGNIFIER_FULL); 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_full->AppendString(l10n_util::GetStringUTF16( 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_FULL)); 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) magnifier_list->Append(option_full.release()); 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> option_partial(new base::ListValue); 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_partial->AppendInteger(ash::MAGNIFIER_PARTIAL); 5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_partial->Append(new base::StringValue(l10n_util::GetStringUTF16( 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_PARTIAL))); 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) magnifier_list->Append(option_partial.release()); 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->Set("magnifierList", magnifier_list.release()); 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("macPasswordsWarning", 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MAC_WARNING)); 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetBoolean("multiple_profiles", 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->profile_manager()->GetNumberOfProfiles() > 1); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (ShouldShowMultiProfilesUserList()) 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->Set("profilesInfo", GetProfilesInfoList().release()); 5912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 59203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) values->SetBoolean("profileIsGuest", 59303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) Profile::FromWebUI(web_ui())->IsOffTheRecord()); 59403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 5955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) values->SetBoolean("profileIsSupervised", 596f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())->IsSupervised()); 5972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_CHROMEOS) 5992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->SetBoolean( 6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "gpuEnabledAtStart", 6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_browser_process->gpu_mode_manager()->initial_gpu_mode_pref()); 6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 60368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 60423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 6055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetBoolean("cloudPrintHideNotificationsCheckbox", 6065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !local_discovery::PrivetNotificationService::IsEnabled()); 60768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 60868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetBoolean("cloudPrintShowMDnsOptions", 6105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cloud_print_mdns_ui_enabled_); 61168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("cloudPrintLearnMoreURL", chrome::kCloudPrintLearnMoreURL); 61368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("languagesLearnMoreURL", 6155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chrome::kLanguageSettingsLearnMoreUrl); 61623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 61723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) values->SetBoolean( 6185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "easyUnlockAllowed", 6195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->IsAllowed()); 62023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) values->SetString("easyUnlockLearnMoreURL", chrome::kEasyUnlockLearnMoreUrl); 6210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#if defined(OS_CHROMEOS) 6230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch values->SetBoolean( 6240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "consumerManagementEnabled", 6250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch CommandLine::ForCurrentProcess()->HasSwitch( 6260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch chromeos::switches::kEnableConsumerManagement)); 627f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 628f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RegisterTitle(values, "thirdPartyImeConfirmOverlay", 629f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGES_THIRD_PARTY_WARNING_TITLE); 63023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif 6316d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) values->SetBoolean("showSetDefault", ShouldShowSetDefaultBrowser()); 6336d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6346d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) values->SetBoolean("allowAdvancedSettings", ShouldAllowAdvancedSettings()); 635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch values->SetBoolean("websiteSettingsManagerEnabled", 637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CommandLine::ForCurrentProcess()->HasSwitch( 638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kEnableWebsiteSettingsManager)); 6396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 64034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) values->SetBoolean("usingNewProfilesUI", switches::IsNewAvatarMenu()); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 643c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#if defined(ENABLE_FULL_PRINTING) 6445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::RegisterCloudPrintValues( 6455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* values) { 64668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) values->SetString("cloudPrintOptionLabel", 64768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) l10n_util::GetStringFUTF16( 64868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_CLOUD_PRINT_CHROMEOS_OPTION_LABEL, 64968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT))); 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 651c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif // defined(ENABLE_FULL_PRINTING) 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::RegisterMessages() { 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "becomeDefaultBrowser", 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::BecomeDefaultBrowser, 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "setDefaultSearchEngine", 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetDefaultSearchEngine, 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 663868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) "deleteProfile", 664868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::DeleteProfile, 665868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Unretained(this))); 666868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "themesReset", 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ThemesReset, 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 670ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch web_ui()->RegisterMessageCallback( 671ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "requestProfilesInfo", 672ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Bind(&BrowserOptionsHandler::HandleRequestProfilesInfo, 673ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Unretained(this))); 674eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 676eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "themesSetNative", 677eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::Bind(&BrowserOptionsHandler::ThemesSetNative, 6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "selectDownloadLocation", 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleSelectDownloadLocation, 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autoOpenFileTypesAction", 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleAutoOpenButton, 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultFontSizeAction", 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleDefaultFontSize, 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultZoomFactorAction", 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleDefaultZoomFactor, 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) || defined(OS_MACOSX) 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "showManageSSLCertificates", 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ShowManageSSLCertificates, 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "openWallpaperManager", 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleOpenWallpaperManager, 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "virtualKeyboardChange", 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::VirtualKeyboardChangeCallback, 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 712effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "onPowerwashDialogShow", 713effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Bind(&BrowserOptionsHandler::OnPowerwashDialogShow, 714effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Unretained(this))); 715effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch web_ui()->RegisterMessageCallback( 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "performFactoryResetRestart", 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::PerformFactoryResetRestart, 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 7202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 7212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "restartBrowser", 7222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleRestartBrowser, 7232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 724c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch web_ui()->RegisterMessageCallback( 725c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch "showNetworkProxySettings", 726c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch base::Bind(&BrowserOptionsHandler::ShowNetworkProxySettings, 727c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch base::Unretained(this))); 728c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif // defined(OS_CHROMEOS) 72968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 73023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 7314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (cloud_print_mdns_ui_enabled_) { 73268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) web_ui()->RegisterMessageCallback( 73368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) "showCloudPrintDevicesPage", 73468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ShowCloudPrintDevicesPage, 73568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Unretained(this))); 73668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 73768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 7385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "requestHotwordAvailable", 7405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleRequestHotwordAvailable, 7415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Unretained(this))); 742a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 743a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "launchHotwordAudioVerificationApp", 7451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind( 7461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &BrowserOptionsHandler::HandleLaunchHotwordAudioVerificationApp, 7471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this))); 7481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_ui()->RegisterMessageCallback( 75023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) "launchEasyUnlockSetup", 75123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleLaunchEasyUnlockSetup, 75223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Unretained(this))); 753c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 754c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch web_ui()->RegisterMessageCallback( 755c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "refreshExtensionControlIndicators", 756c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind( 757010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &BrowserOptionsHandler::HandleRefreshExtensionControlIndicators, 758c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Unretained(this))); 759c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 7601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_ui()->RegisterMessageCallback("metricsReportingCheckboxChanged", 7611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&BrowserOptionsHandler::HandleMetricsReportingChange, 7621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this))); 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)void BrowserOptionsHandler::Uninitialize() { 7668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) registrar_.RemoveAll(); 767010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_WIN) 768010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))->RemoveObserver(this); 769010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 7701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS) 7711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::ConsumerManagementService* consumer_management = 7721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_browser_process->platform_part()->browser_policy_connector_chromeos()-> 7731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetConsumerManagementService(); 7741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (consumer_management) 7751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci consumer_management->RemoveObserver(this); 7761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 7778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 7788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::OnStateChanged() { 7803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UpdateSyncState(); 7812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 7822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::GoogleSigninSucceeded(const std::string& account_id, 7841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& username, 785effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::string& password) { 786effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch OnStateChanged(); 787effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 788effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 7891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::GoogleSignedOut(const std::string& account_id, 7901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& username) { 791effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch OnStateChanged(); 792effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 793effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::PageLoadStarted() { 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_initialized_ = false; 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::InitializeHandler() { 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncService* sync_service( 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile)); 804effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(blundell): Use a ScopedObserver to observe the PSS so that cleanup on 805effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // destruction is automatic. 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sync_service) 8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_service->AddObserver(this); 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 809effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerBase* signin_manager( 810effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerFactory::GetInstance()->GetForProfile(profile)); 811effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (signin_manager) 812effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch signin_observer_.Add(signin_manager); 813effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create our favicon data source. 8152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::URLDataSource::Add( 8162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile, new FaviconSource(profile, FaviconSource::FAVICON)); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default_browser_policy_.Init( 8192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDefaultBrowserSettingEnabled, 8202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_browser_process->local_state(), 8212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::UpdateDefaultBrowserState, 8222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<ThemeService>( 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile))); 8335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED, 8345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::Source<Profile>(profile)); 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTemplateUrlServiceObserver(); 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 838010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))->AddObserver(this); 839010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 8415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!command_line.HasSwitch(switches::kUserDataDir)) { 8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::CheckAutoLaunch, 8442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) weak_ptr_factory_.GetWeakPtr(), 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile->GetPath())); 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 84903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // No preferences below this point may be modified by guest profiles. 85003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (Profile::FromWebUI(web_ui())->IsGuestSession()) 85103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return; 85203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 8532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) auto_open_files_.Init( 8542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDownloadExtensionsToOpen, prefs, 8552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupAutoOpenFileTypes, 8562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default_zoom_level_.Init( 8582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDefaultZoomLevel, prefs, 8592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupPageZoomSelector, 8602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Init(prefs); 8622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Add( 8636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) prefs::kNetworkPredictionOptions, 8646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupNetworkPredictionControl, 8656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::Unretained(this))); 8666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) profile_pref_registrar_.Add( 86790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs::kWebKitDefaultFontSize, 86890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupFontSizeSelector, 86990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Unretained(this))); 87090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile_pref_registrar_.Add( 87190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs::kWebKitDefaultFixedFontSize, 87290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupFontSizeSelector, 87390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Unretained(this))); 87490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile_pref_registrar_.Add( 875f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kSupervisedUsers, 8760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupManagingSupervisedUsers, 8770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::Unretained(this))); 8780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) profile_pref_registrar_.Add( 8792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kSigninAllowed, 8802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnSigninAllowedPrefChange, 8812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 88223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) profile_pref_registrar_.Add( 88323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) prefs::kEasyUnlockPairing, 88423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupEasyUnlock, 88523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Unretained(this))); 886c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 887c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 888c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profile_pref_registrar_.Add( 889c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch prefs::kURLsToRestoreOnStartup, 890c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind(&BrowserOptionsHandler::SetupExtensionControlledIndicators, 891010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 892c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profile_pref_registrar_.Add( 893c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch prefs::kHomePage, 894c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind(&BrowserOptionsHandler::SetupExtensionControlledIndicators, 895010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 896c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 897c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 898a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_CHROMEOS) 899a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!policy_registrar_) { 900a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_registrar_.reset(new policy::PolicyChangeRegistrar( 901a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::ProfilePolicyConnectorFactory::GetForProfile(profile)-> 902a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_service(), 903a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string()))); 904a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_registrar_->Observe( 905a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::key::kUserAvatarImage, 906a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnUserImagePolicyChanged, 907a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Unretained(this))); 908a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) policy_registrar_->Observe( 909a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) policy::key::kWallpaperImage, 910a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnWallpaperPolicyChanged, 911a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Unretained(this))); 912a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 913a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#else // !defined(OS_CHROMEOS) 9142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Add( 9152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kProxy, 9162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection, 9172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::InitializePage() { 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_initialized_ = true; 923c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnTemplateURLServiceChanged(); 925c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserveThemeChanged(); 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnStateChanged(); 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDefaultBrowserState(); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupMetricsReportingSettingVisibility(); 9311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetupMetricsReportingCheckbox(); 9326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetupNetworkPredictionControl(); 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupFontSizeSelector(); 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupPageZoomSelector(); 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupAutoOpenFileTypes(); 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupProxySettingsSection(); 937f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupManageCertificatesSection(); 9380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) SetupManagingSupervisedUsers(); 93923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) SetupEasyUnlock(); 940010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 941c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupAccessibilityFeatures(); 9445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::BrowserPolicyConnectorChromeOS* connector = 9455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) g_browser_process->platform_part()->browser_policy_connector_chromeos(); 9465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!connector->IsEnterpriseManaged() && 9476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !user_manager::UserManager::Get()->IsLoggedInAsGuest() && 9486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser()) { 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.enableFactoryResetSection"); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 952a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 9535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 954a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnAccountPictureManagedChanged( 9555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::ProfilePolicyConnectorFactory::GetForProfile(profile)-> 956a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_service()->GetPolicies( 957a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, 958a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::string())) 959a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .Get(policy::key::kUserAvatarImage)); 960a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 961a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OnWallpaperManagedChanged( 962a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) chromeos::WallpaperManager::Get()->IsPolicyControlled( 9636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetActiveUser()->email())); 9641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci policy::ConsumerManagementService* consumer_management = 9661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci g_browser_process->platform_part()->browser_policy_connector_chromeos()-> 9671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetConsumerManagementService(); 9681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (consumer_management) { 9691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OnConsumerManagementStatusChanged(); 9701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci consumer_management->AddObserver(this); 9711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::CheckAutoLaunch( 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::WeakPtr<BrowserOptionsHandler> weak_this, 9782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path) { 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 980e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DCHECK_CURRENTLY_ON(BrowserThread::FILE); 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Auto-launch is not supported for secondary profiles yet. 9835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (profile_path.BaseName().value() != 9845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ASCIIToUTF16(chrome::kInitialProfile)) { 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 9865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pass in weak pointer to this to avoid race if BrowserOptionsHandler is 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deleted. 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::CheckAutoLaunchCallback, 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_this, 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_launch_trial::IsInAutoLaunchGroup(), 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_launch_util::AutoStartRequested( 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_path.BaseName().value(), 9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, // Window requested. 9972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath()))); 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::CheckAutoLaunchCallback( 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_in_auto_launch_group, 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool will_launch_at_login) { 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1005e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DCHECK_CURRENTLY_ON(BrowserThread::UI); 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (is_in_auto_launch_group) { 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback("toggleAutoLaunch", 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ToggleAutoLaunch, 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue enabled(will_launch_at_login); 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAutoLaunchState", 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled); 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool BrowserOptionsHandler::ShouldShowSetDefaultBrowser() { 10205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 10215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // We're always the default browser on ChromeOS. 10225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 10245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 10255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return !profile->IsGuestSession(); 10265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 10275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 10285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 10295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool BrowserOptionsHandler::ShouldShowMultiProfilesUserList() { 10305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 10315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // On Chrome OS we use different UI for multi-profiles. 10325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 10345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (helper::GetDesktopType(web_ui()) != chrome::HOST_DESKTOP_TYPE_NATIVE) 10355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 10375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (profile->IsGuestSession()) 10385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return profiles::IsMultipleProfilesEnabled(); 10405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 10415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 10425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1043e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochbool BrowserOptionsHandler::ShouldAllowAdvancedSettings() { 1044e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#if defined(OS_CHROMEOS) 1045e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // ChromeOS handles guest-mode restrictions in a different manner. 1046e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return true; 1047e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#else 1048e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return !Profile::FromWebUI(web_ui())->IsGuestSession(); 1049e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#endif 1050e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1051e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::UpdateDefaultBrowserState() { 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->StartCheckIsDefault(); 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::BecomeDefaultBrowser(const base::ListValue* args) { 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the default browser setting is managed then we should not be able to 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // call this function. 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_browser_policy_.IsManaged()) 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SetAsDefaultBrowser")); 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->StartSetAsDefault(); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback takes care of updating UI. 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the user attempted to make Chrome the default browser, then he/she 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // arguably wants to be notified when that changes. 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); 10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(prefs::kCheckDefaultBrowser, true); 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserOptionsHandler::StatusStringIdForState( 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellIntegration::DefaultWebClientState state) { 10742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (state == ShellIntegration::IS_DEFAULT) 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; 10762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (state == ShellIntegration::NOT_DEFAULT) 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT; 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN; 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultWebClientUIState( 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellIntegration::DefaultWebClientUIState state) { 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int status_string_id; 10841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 10851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (state == ShellIntegration::STATE_IS_DEFAULT) { 10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; 10871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else if (state == ShellIntegration::STATE_NOT_DEFAULT) { 10881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (ShellIntegration::CanSetAsDefaultBrowser() == 10891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ShellIntegration::SET_DEFAULT_NOT_ALLOWED) { 10901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_SXS; 10911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else { 10921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT; 10931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 10941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else if (state == ShellIntegration::STATE_UNKNOWN) { 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN; 10961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else { 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; // Still processing. 10981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetDefaultBrowserUIString(status_string_id); 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserOptionsHandler::IsInteractiveSetDefaultPermitted() { 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; // This is UI so we can allow it. 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultBrowserUIString(int status_string_id) { 11082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::StringValue status_string( 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16(status_string_id, 11102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue is_default( 11132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue can_be_default( 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !default_browser_policy_.IsManaged() && 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT || 11182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string_id == IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT)); 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.updateDefaultBrowserState", 11222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string, is_default, can_be_default); 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::OnTemplateURLServiceChanged() { 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!template_url_service_ || !template_url_service_->loaded()) 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TemplateURL* default_url = 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetDefaultSearchProvider(); 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int default_index = -1; 11335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue search_engines; 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService::TemplateURLVector model_urls( 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetTemplateURLs()); 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < model_urls.size(); ++i) { 1137f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (!model_urls[i]->ShowInDefaultList( 1138f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) template_url_service_->search_terms_data())) 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* entry = new base::DictionaryValue(); 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("name", model_urls[i]->short_name()); 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetInteger("index", i); 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) search_engines.Append(entry); 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (model_urls[i] == default_url) 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_index = i; 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->CallJavascriptFunction( 11502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "BrowserOptions.updateSearchEngines", 11512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) search_engines, 11522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue(default_index), 11532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue( 1154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) template_url_service_->is_default_search_managed() || 1155f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) template_url_service_->IsExtensionControlledDefaultSearch())); 1156c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultSearchEngine( 11615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selected_index = -1; 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ExtractIntegerValue(args, &selected_index)) { 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService::TemplateURLVector model_urls( 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetTemplateURLs()); 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selected_index >= 0 && 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_index < static_cast<int>(model_urls.size())) 11725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu template_url_service_->SetUserSelectedDefaultSearchProvider( 11735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu model_urls[selected_index]); 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SearchEngineChanged")); 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::AddTemplateUrlServiceObserver() { 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_ = 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())); 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (template_url_service_) { 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->Load(); 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->AddObserver(this); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1187010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::OnExtensionLoaded( 1188010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* browser_context, 1189010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension) { 1190010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1191010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1192010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1193010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::OnExtensionUnloaded( 1194010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* browser_context, 1195010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension, 1196010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extensions::UnloadedExtensionInfo::Reason reason) { 1197010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1198010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1199010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::Observe( 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int type, 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) { 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifications are used to update the UI dynamically when settings change in 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the background. If the UI is currently being loaded, no dynamic updates are 12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // possible (as the DOM and JS are not fully loaded) or necessary (as 12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // InitializePage() will update the UI at the end of the load). 12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!page_initialized_) 12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) switch (type) { 12122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: 12132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserveThemeChanged(); 12142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 12162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED: 12172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateAccountPicture(); 12182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED: 12218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SendProfilesInfo(); 12222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED: 12242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Update our sync/signin status display. 12252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnStateChanged(); 12262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default: 12282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ToggleAutoLaunch(const base::ListValue* args) { 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!auto_launch_trial::IsInAutoLaunchGroup()) 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool enable; 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK_EQ(args->GetSize(), 1U); 12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(args->GetBoolean(0, &enable)); 12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserThread::PostTask( 12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserThread::FILE, FROM_HERE, 12442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enable ? 12452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&auto_launch_util::EnableForegroundStartAtLogin, 12462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile->GetPath().BaseName().value(), base::FilePath()) : 12472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&auto_launch_util::DisableForegroundStartAtLogin, 12482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile->GetPath().BaseName().value())); 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // OS_WIN 12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)scoped_ptr<base::ListValue> BrowserOptionsHandler::GetProfilesInfoList() { 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileInfoCache& cache = 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->profile_manager()->GetProfileInfoCache(); 12555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::ListValue> profile_info_list(new base::ListValue); 12562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath current_profile_path = 12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()->GetPath(); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) { 12605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* profile_value = new base::DictionaryValue(); 12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i)); 12622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path = cache.GetPathOfProfileAtIndex(i); 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->Set("filePath", base::CreateFilePathValue(profile_path)); 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetBoolean("isCurrentProfile", 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_path == current_profile_path); 12665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile_value->SetBoolean("isSupervised", 12675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cache.ProfileIsSupervisedAtIndex(i)); 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_gaia_picture = 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.IsUsingGAIAPictureOfProfileAtIndex(i) && 12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.GetGAIAPictureOfProfileAtIndex(i); 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (is_gaia_picture) { 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Image icon = profiles::GetAvatarIconForWebUI( 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.GetAvatarIconOfProfileAtIndex(i), true); 12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("iconURL", 12762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) webui::GetBitmapDataUrl(icon.AsBitmap())); 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i); 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("iconURL", 1280c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profiles::GetDefaultAvatarIconUrl(icon_index)); 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_info_list->Append(profile_value); 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return profile_info_list.Pass(); 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SendProfilesInfo() { 12905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!ShouldShowMultiProfilesUserList()) 1291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesInfo", 12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *GetProfilesInfoList()); 12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::DeleteProfile(const base::ListValue* args) { 1297868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DCHECK(args); 12985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::Value* file_path_value; 1299868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!args->Get(0, &file_path_value)) 1300868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return; 1301868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1302868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::FilePath file_path; 1303868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!base::GetValueAsFilePath(*file_path_value, &file_path)) 1304868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return; 130568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) helper::DeleteProfileAtPath(file_path, web_ui()); 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::ObserveThemeChanged() { 13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeService* theme_service = ThemeServiceFactory::GetForProfile(profile); 1311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_system_theme = false; 1312eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1313eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 1314f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool profile_is_supervised = profile->IsSupervised(); 1315cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) is_system_theme = theme_service->UsingSystemTheme(); 1316cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::FundamentalValue native_theme_enabled(!is_system_theme && 1317f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) !profile_is_supervised); 1318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch web_ui()->CallJavascriptFunction("BrowserOptions.setNativeThemeButtonEnabled", 1319eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch native_theme_enabled); 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1322cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_classic_theme = !is_system_theme && 1323eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch theme_service->UsingDefaultTheme(); 1324558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::FundamentalValue enabled(!is_classic_theme); 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setThemesResetButtonEnabled", 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled); 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ThemesReset(const base::ListValue* args) { 13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 1331eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::RecordAction(UserMetricsAction("Options_ThemesReset")); 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile)->UseDefaultTheme(); 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 13365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ThemesSetNative(const base::ListValue* args) { 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_GtkThemeSet")); 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 1339cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile)->UseSystemTheme(); 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::UpdateAccountPicture() { 13456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) std::string email = 13466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetLoggedInUser()->email(); 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!email.empty()) { 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture"); 13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue email_value(email); 13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture", 13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) email_value); 13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1354a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1355a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void BrowserOptionsHandler::OnAccountPictureManagedChanged(bool managed) { 1356a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setAccountPictureManaged", 1357a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::FundamentalValue(managed)); 1358a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 1359a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1360a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BrowserOptionsHandler::OnWallpaperManagedChanged(bool managed) { 13611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(USE_ATHENA) 13621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // In Athena, we don't allow customizing wallpaper right now. 13631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(mukai|bshe): remove this. http://crbug.com/408734 13641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci managed = true; 13651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 1366a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setWallpaperManaged", 1367a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::FundamentalValue(managed)); 1368a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)scoped_ptr<base::DictionaryValue> 13725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)BrowserOptionsHandler::GetSyncStateDictionary() { 13731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The items which are to be written into |sync_status| are also described in 13741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // chrome/browser/resources/options/browser_options.js in @typedef 13751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // for SyncStatus. Please update it whenever you add or remove any keys here. 13765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::DictionaryValue> sync_status(new base::DictionaryValue); 13772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 13782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (profile->IsGuestSession()) { 13792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Cannot display signin status when running in guest mode on chromeos 13802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // because there is no SigninManager. 13812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("signinAllowed", false); 13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sync_status.Pass(); 13832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1384cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1385f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) sync_status->SetBoolean("supervisedUser", profile->IsSupervised()); 13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool signout_prohibited = false; 1388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if !defined(OS_CHROMEOS) 13892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Signout is not allowed if the user has policy (crbug.com/172204). 1390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signout_prohibited = 1391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SigninManagerFactory::GetForProfile(profile)->IsSignoutProhibited(); 1392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 1393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1394868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ProfileSyncService* service = 1395868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); 1396558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch SigninManagerBase* signin = SigninManagerFactory::GetForProfile(profile); 1397558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(signin); 1398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sync_status->SetBoolean("signoutAllowed", !signout_prohibited); 13992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("signinAllowed", signin->IsSigninAllowed()); 1400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sync_status->SetBoolean("syncSystemEnabled", (service != NULL)); 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("setupCompleted", 14022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && service->HasSyncSetupCompleted()); 14032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("setupInProgress", 14042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && !service->IsManaged() && service->FirstSetupInProgress()); 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1406a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 status_label; 1407a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 link_label; 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool status_has_error = sync_ui_util::GetStatusLabels( 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) == 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_ui_util::SYNC_ERROR; 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetString("statusText", status_label); 14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetString("actionLinkText", link_label); 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("hasError", status_has_error); 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("managed", service && service->IsManaged()); 14161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sync_status->SetBoolean("signedIn", signin->IsAuthenticated()); 14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("hasUnrecoverableError", 14182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && service->HasUnrecoverableError()); 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sync_status.Pass(); 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::HandleSelectDownloadLocation( 14245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_ = ui::SelectFileDialog::Create( 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::SelectFileDialog::FileTypeInfo info; 14292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.support_drive = true; 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_->SelectFile( 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::SelectFileDialog::SELECT_FOLDER, 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE), 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetFilePath(prefs::kDownloadDefaultDirectory), 1434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &info, 1435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 0, 1436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath::StringType(), 1437010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->GetWebContents()->GetTopLevelNativeWindow(), 1438c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NULL); 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BrowserOptionsHandler::FileSelected(const base::FilePath& path, int index, 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* params) { 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SetDownloadDirectory")); 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, path); 1446868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) pref_service->SetFilePath(prefs::kSaveFileDefaultDirectory, path); 14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::TouchpadExists(bool exists) { 14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue val(exists); 14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showTouchpadControls", val); 14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::MouseExists(bool exists) { 14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue val(exists); 14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showMouseControls", val); 14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1459a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1460a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void BrowserOptionsHandler::OnUserImagePolicyChanged( 1461a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::Value* previous_policy, 1462a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::Value* current_policy) { 1463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool had_policy = previous_policy; 1464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool has_policy = current_policy; 1465a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (had_policy != has_policy) 1466a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnAccountPictureManagedChanged(has_policy); 1467a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 1468a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1469a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BrowserOptionsHandler::OnWallpaperPolicyChanged( 1470a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::Value* previous_policy, 1471a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::Value* current_policy) { 1472a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool had_policy = previous_policy; 1473a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool has_policy = current_policy; 1474a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (had_policy != has_policy) 1475a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OnWallpaperManagedChanged(has_policy); 1476a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1477a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1478effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid BrowserOptionsHandler::OnPowerwashDialogShow( 1479effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const base::ListValue* args) { 1480effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch UMA_HISTOGRAM_ENUMERATION( 1481effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "Reset.ChromeOS.PowerwashDialogShown", 1482effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chromeos::reset::DIALOG_FROM_OPTIONS, 1483effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chromeos::reset::DIALOG_VIEW_TYPE_SIZE); 1484effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 1485effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 14861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::OnConsumerManagementStatusChanged() { 14871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& status = g_browser_process->platform_part()-> 14881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci browser_policy_connector_chromeos()->GetConsumerManagementService()-> 14891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci GetStatusString(); 14901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_ui()->CallJavascriptFunction( 14911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "BrowserOptions.setConsumerManagementStatus", base::StringValue(status)); 14921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 14931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1494a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14963240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochvoid BrowserOptionsHandler::UpdateSyncState() { 14973240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState", 14983240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch *GetSyncStateDictionary()); 14993240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch} 15003240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 15013240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochvoid BrowserOptionsHandler::OnSigninAllowedPrefChange() { 15023240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UpdateSyncState(); 15033240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch} 15043240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 15055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleAutoOpenButton(const base::ListValue* args) { 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ResetAutoOpenFiles")); 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadManager* manager = BrowserContext::GetDownloadManager( 15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()); 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (manager) 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen(); 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleDefaultFontSize(const base::ListValue* args) { 15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int font_size; 15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExtractIntegerValue(args, &font_size)) { 15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (font_size > 0) { 151790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 151890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->SetInteger(prefs::kWebKitDefaultFontSize, font_size); 15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupFontSizeSelector(); 15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleDefaultZoomFactor( 15255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double zoom_factor; 15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExtractDoubleValue(args, &zoom_factor)) { 152858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch default_zoom_level_.SetValue(content::ZoomFactorToZoomLevel(zoom_factor)); 15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRestartBrowser(const base::ListValue* args) { 1533f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_ASH) 1534f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // If hardware acceleration is disabled then we need to force restart 1535f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // browser in desktop mode. 1536f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // TODO(shrikant): Remove this once we fix start mode logic for browser. 1537f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Currently there are issues with determining correct browser mode 1538f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // at startup. 1539f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_ASH) { 1540f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 1541f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!pref_service->GetBoolean(prefs::kHardwareAccelerationModeEnabled)) { 1542f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::AttemptRestartToDesktopMode(); 1543f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return; 1544f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1545f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1546f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 1547f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_WIN) 15495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // On Windows Breakpad will upload crash reports if the breakpad pipe name 15505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // environment variable is defined. So we undefine this environment variable 15515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // before restarting, as the restarted processes will inherit their 15525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // environment variables from ours, thus suppressing crash uploads. 15535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 15545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!pref_service->GetBoolean(prefs::kMetricsReportingEnabled)) { 15555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) HMODULE exe_module = GetModuleHandle(chrome::kBrowserProcessExecutableName); 15565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (exe_module) { 15575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) typedef void (__cdecl *ClearBreakpadPipeEnvVar)(); 15585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ClearBreakpadPipeEnvVar clear = reinterpret_cast<ClearBreakpadPipeEnvVar>( 15595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetProcAddress(exe_module, "ClearBreakpadPipeEnvironmentVariable")); 15605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (clear) 15615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) clear(); 15625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 15635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 15645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 15655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 15662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::AttemptRestart(); 15672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 15682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 15695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRequestProfilesInfo( 15705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 1571ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SendProfilesInfo(); 1572ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 1573ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 15755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowNetworkProxySettings( 15765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ShowProxySettings")); 15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AdvancedOptionsUtilities::ShowNetworkProxySettings( 15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()); 15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_WIN) || defined(OS_MACOSX) 15845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowManageSSLCertificates( 15855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ManageSSLCertificates")); 15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AdvancedOptionsUtilities::ShowManageSSLCertificates( 15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()); 15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 159223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 159368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 15945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowCloudPrintDevicesPage( 15955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 159668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_CloudPrintDevicesPage")); 159768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Navigate in current tab to devices page. 159868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) OpenURLParams params( 159968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) GURL(chrome::kChromeUIDevicesURL), Referrer(), 16001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CURRENT_TAB, ui::PAGE_TRANSITION_LINK, false); 160168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) web_ui()->GetWebContents()->OpenURL(params); 160268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 160368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 160468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 160568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 16065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRequestHotwordAvailable( 16075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 16085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 16095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string group = base::FieldTrialList::FindFullName("VoiceTrigger"); 16106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::FundamentalValue enabled( 16116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) profile->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled)); 1612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (group != "" && group != "Disabled" && 1613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HotwordServiceFactory::IsHotwordAllowed(profile)) { 1614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Update the current error value. 1615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HotwordServiceFactory::IsServiceAvailable(profile); 1616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int error = HotwordServiceFactory::GetCurrentError(profile); 1617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!error) { 16186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showHotwordSection", 16196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) enabled); 1620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else { 1621cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::string16 hotword_help_url = 1622cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::ASCIIToUTF16(chrome::kHotwordLearnMoreURL); 1623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::StringValue error_message(l10n_util::GetStringUTF16(error)); 1624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (error == IDS_HOTWORD_GENERIC_ERROR_MESSAGE) { 1625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch error_message = base::StringValue( 1626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch l10n_util::GetStringFUTF16(error, hotword_help_url)); 1627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 1628cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showHotwordSection", 1629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch enabled, error_message); 1630cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 16316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch( 16326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switches::kEnableExperimentalHotwording)) { 16336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction( 16346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "BrowserOptions.showHotwordAlwaysOnSection"); 16356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 16365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 16375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 16385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 16391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::HandleLaunchHotwordAudioVerificationApp( 16401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::ListValue* args) { 16411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Profile* profile = Profile::FromWebUI(web_ui()); 16421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool retrain = false; 16441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool success = args->GetBoolean(0, &retrain); 16451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(success); 16461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HotwordService::LaunchMode launch_mode = 16471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HotwordService::HOTWORD_AND_AUDIO_HISTORY; 16481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (retrain) { 16501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(profile->GetPrefs()->GetBoolean( 16511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefs::kHotwordAlwaysOnSearchEnabled)); 16521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(profile->GetPrefs()->GetBoolean( 16531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefs::kHotwordAudioLoggingEnabled)); 16541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci launch_mode = HotwordService::SPEECH_TRAINING; 16561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else if (profile->GetPrefs()->GetBoolean( 16571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefs::kHotwordAudioLoggingEnabled)) { 16581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!profile->GetPrefs()->GetBoolean( 16591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefs::kHotwordAlwaysOnSearchEnabled)); 16601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(kcarattini): Make sure the Chrome Audio Logging pref is synced 16621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // to the account-level Audio History setting from footprints. 16631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci launch_mode = HotwordService::HOTWORD_ONLY; 16641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else { 16651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK(!profile->GetPrefs()->GetBoolean( 16661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefs::kHotwordAlwaysOnSearchEnabled)); 16671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 16681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HotwordService* hotword_service = 16701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HotwordServiceFactory::GetForProfile(profile); 16711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!hotword_service) 16721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 16731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci hotword_service->LaunchHotwordAudioVerificationApp(launch_mode); 16751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 16761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 167723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void BrowserOptionsHandler::HandleLaunchEasyUnlockSetup( 167823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const base::ListValue* args) { 16795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->LaunchSetup(); 168023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 168123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1682010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::HandleRefreshExtensionControlIndicators( 1683010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::ListValue* args) { 1684010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1685010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1686010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::HandleOpenWallpaperManager( 16895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 1690c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ash::Shell::GetInstance()->user_wallpaper_delegate()->OpenSetWallpaperPage(); 16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::VirtualKeyboardChangeCallback( 16945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool enabled = false; 16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args->GetBoolean(0, &enabled); 16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::accessibility::EnableVirtualKeyboard(enabled); 16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::PerformFactoryResetRestart( 17025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 17035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::BrowserPolicyConnectorChromeOS* connector = 17045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) g_browser_process->platform_part()->browser_policy_connector_chromeos(); 17055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (connector->IsEnterpriseManaged()) 17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(prefs::kFactoryResetRequested, true); 17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->CommitPendingWrite(); 17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Perform sign out. Current chrome process will then terminate, new one will 17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be launched (as if it was a restart). 17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); 17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupAccessibilityFeatures() { 17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue virtual_keyboard_enabled( 1720f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) pref_service->GetBoolean(prefs::kAccessibilityVirtualKeyboardEnabled)); 17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setVirtualKeyboardCheckboxState", 17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual_keyboard_enabled); 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupMetricsReportingSettingVisibility() { 17285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't show the reporting setting if we are in the guest mode. 17305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (Profile::FromWebUI(web_ui())->IsGuestSession()) { 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue visible(false); 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setMetricsReportingSettingVisibility", visible); 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void BrowserOptionsHandler::SetupNetworkPredictionControl() { 17396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 17406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 17416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::DictionaryValue dict; 17426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict.SetInteger("value", 17436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) pref_service->GetInteger(prefs::kNetworkPredictionOptions)); 17446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict.SetBoolean("disabled", 17456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !pref_service->IsUserModifiablePreference( 17466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) prefs::kNetworkPredictionOptions)); 17476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 17486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setNetworkPredictionValue", 17496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict); 17506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 17516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupFontSizeSelector() { 175390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 175490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PrefService::Preference* default_font_size = 175590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->FindPreference(prefs::kWebKitDefaultFontSize); 175690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PrefService::Preference* default_fixed_font_size = 175790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->FindPreference(prefs::kWebKitDefaultFixedFontSize); 175890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 17595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue dict; 176090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetInteger("value", 176190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->GetInteger(prefs::kWebKitDefaultFontSize)); 176290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 176390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The font size control displays the value of the default font size, but 176490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // setting it alters both the default font size and the default fixed font 176590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // size. So it must be disabled when either of those prefs is not user 176690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // modifiable. 176790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetBoolean("disabled", 176890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) !default_font_size->IsUserModifiable() || 176990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) !default_fixed_font_size->IsUserModifiable()); 177090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 177190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // This is a poor man's version of CoreOptionsHandler::CreateValueForPref, 177290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // adapted to consider two prefs. It may be better to refactor 177390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // CreateValueForPref so it can be called from here. 177490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (default_font_size->IsManaged() || default_fixed_font_size->IsManaged()) { 177590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetString("controlledBy", "policy"); 177690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } else if (default_font_size->IsExtensionControlled() || 177790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) default_fixed_font_size->IsExtensionControlled()) { 177890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetString("controlledBy", "extension"); 177990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 178090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 178190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setFontSize", dict); 17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupPageZoomSelector() { 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double default_zoom_level = pref_service->GetDouble(prefs::kDefaultZoomLevel); 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double default_zoom_factor = 178858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch content::ZoomLevelToZoomFactor(default_zoom_level); 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Generate a vector of zoom factors from an array of known presets along with 17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the default factor added if necessary. 17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<double> zoom_factors = 17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_page_zoom::PresetZoomFactors(default_zoom_factor); 17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Iterate through the zoom factors and and build the contents of the 17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // selector that will be sent to the javascript handler. 17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Each item in the list has the following parameters: 17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1. Title (string). 17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2. Value (double). 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 3. Is selected? (bool). 18015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue zoom_factors_value; 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::vector<double>::const_iterator i = zoom_factors.begin(); 18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i != zoom_factors.end(); ++i) { 18045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* option = new base::ListValue(); 18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double factor = *i; 18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int percent = static_cast<int>(factor * 100 + 0.5); 18072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::StringValue( 18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16Int(IDS_ZOOM_PERCENT, percent))); 18092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::FundamentalValue(factor)); 18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool selected = content::ZoomValuesEqual(factor, default_zoom_factor); 18112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::FundamentalValue(selected)); 18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) zoom_factors_value.Append(option); 18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setupPageZoomSelector", zoom_factors_value); 18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupAutoOpenFileTypes() { 18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the hidden state for the AutoOpenFileTypesResetToDefault button. 18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We show the button if the user has any auto-open file types registered. 18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadManager* manager = BrowserContext::GetDownloadManager( 18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()); 18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool display = manager && 18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadPrefs::FromDownloadManager(manager)->IsAutoOpenUsed(); 18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue value(display); 18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setAutoOpenFileTypesDisplayed", value); 18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupProxySettingsSection() { 18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 18334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Disable the button if proxy settings are managed by a sysadmin, overridden 18344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // by an extension, or the browser is running in Windows Ash (on Windows the 18354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // proxy settings dialog will open on the Windows desktop and be invisible 18364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // to a user in Ash). 18374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool is_win_ash = false; 18384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 1839f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::HostDesktopType desktop_type = helper::GetDesktopType(web_ui()); 1840f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) is_win_ash = (desktop_type == chrome::HOST_DESKTOP_TYPE_ASH); 18414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PrefService::Preference* proxy_config = 18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->FindPreference(prefs::kProxy); 18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_extension_controlled = (proxy_config && 18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) proxy_config->IsExtensionControlled()); 18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 18484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::FundamentalValue disabled(is_win_ash || (proxy_config && 18494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) !proxy_config->IsUserModifiable())); 18502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue extension_controlled(is_extension_controlled); 185146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setupProxySettingsButton", 18522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disabled, extension_controlled); 18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_WIN) 185546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SetupExtensionControlledIndicators(); 185646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif // defined(OS_WIN) 185746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1861f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void BrowserOptionsHandler::SetupManageCertificatesSection() { 1862f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_WIN) 1863f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Disable the button if the settings page is displayed in Windows Ash, 1864f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // otherwise the proxy settings dialog will open on the Windows desktop and 1865f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // be invisible to a user in Ash. 1866f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (helper::GetDesktopType(web_ui()) == chrome::HOST_DESKTOP_TYPE_ASH) { 1867f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue enabled(false); 1868f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.enableCertificateButton", 1869f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) enabled); 1870f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1871f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // defined(OS_WIN) 1872f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 1873f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)void BrowserOptionsHandler::SetupManagingSupervisedUsers() { 18750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) bool has_users = !Profile::FromWebUI(web_ui())-> 1876f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GetPrefs()->GetDictionary(prefs::kSupervisedUsers)->empty(); 18770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::FundamentalValue has_users_value(has_users); 18780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) web_ui()->CallJavascriptFunction( 18790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "BrowserOptions.updateManagesSupervisedUsers", 18800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) has_users_value); 18810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 18820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 188323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void BrowserOptionsHandler::SetupEasyUnlock() { 18846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // TODO(xiyuan): Update when pairing data is really availble. 18856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::ListValue* devices = 18866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->GetRemoteDevices(); 18876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool has_pairing = devices && !devices->empty(); 188823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::FundamentalValue has_pairing_value(has_pairing); 188923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) web_ui()->CallJavascriptFunction( 189023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) "BrowserOptions.updateEasyUnlock", 189123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) has_pairing_value); 189223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 189323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1894010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::SetupExtensionControlledIndicators() { 1895c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 1896010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::DictionaryValue extension_controlled; 1897010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1898010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Search Engine. 189946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const extensions::Extension* extension = 190046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extensions::GetExtensionOverridingSearchEngine( 1901f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1902010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("searchEngine", extension, &extension_controlled); 1903c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1904010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Home page. 190546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingHomepage( 1906f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1907010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("homePage", extension, &extension_controlled); 1908c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1909010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Startup pages. 191046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingStartupPages( 1911f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1912010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("startUpPage", extension, &extension_controlled); 1913010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1914010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the NTP page. 1915010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GURL ntp_url(chrome::kChromeUINewTabURL); 1916010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool ignored_param; 1917010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension = NULL; 1918010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserURLHandler::GetInstance()->RewriteURLIfNecessary( 1919010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &ntp_url, 1920010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext(), 1921010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &ignored_param); 1922010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (ntp_url.SchemeIs("chrome-extension")) { 1923010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) using extensions::ExtensionRegistry; 1924010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry* registry = ExtensionRegistry::Get( 1925010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Profile::FromWebUI(web_ui())); 1926010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension = registry->GetExtensionById(ntp_url.host(), 1927010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::ENABLED); 1928010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 1929010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("newTabPage", extension, &extension_controlled); 1930010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 193146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Check if an extension is overwriting the proxy setting. 193246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingProxy( 193346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) Profile::FromWebUI(web_ui())); 193446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) AppendExtensionData("proxy", extension, &extension_controlled); 193546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1936010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.toggleExtensionIndicators", 1937010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension_controlled); 1938c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 1939010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1940c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 19411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::SetupMetricsReportingCheckbox() { 19421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This function does not work for ChromeOS and non-official builds. 19431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if !defined(OS_CHROMEOS) && defined(GOOGLE_CHROME_BUILD) 19441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool checked = ChromeMetricsServiceAccessor::IsMetricsReportingEnabled(); 19451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool disabled = !IsMetricsReportingUserChangable(); 19461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetMetricsReportingCheckbox(checked, disabled); 19481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 19491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 19501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::HandleMetricsReportingChange( 19521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::ListValue* args) { 19531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool enable; 19541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!args->GetBoolean(0, &enable)) 19551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 19561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci InitiateMetricsReportingChange( 19581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enable, 19591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Bind(&BrowserOptionsHandler::MetricsReportingChangeCallback, 19601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::Unretained(this))); 19611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 19621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::MetricsReportingChangeCallback(bool enabled) { 19641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetMetricsReportingCheckbox(enabled, !IsMetricsReportingUserChangable()); 19651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 19661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid BrowserOptionsHandler::SetMetricsReportingCheckbox(bool checked, 19681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool disabled) { 19691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_ui()->CallJavascriptFunction( 19701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci "BrowserOptions.setMetricsReportingCheckboxState", 19711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::FundamentalValue(checked), 19721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::FundamentalValue(disabled)); 19731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 19741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 1976