browser_options_handler.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "apps/app_window.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "apps/app_window_registry.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind_helpers.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/environment.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/singleton.h" 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/metrics/field_trial.h" 18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/metrics/histogram.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/prefs/scoped_user_pref_update.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stl_util.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/value_conversions.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/auto_launch_trial.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chrome_page_zoom.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/custom_home_pages_table_model.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/download/download_prefs.h" 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/gpu/gpu_mode_manager.h" 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/lifetime/application_lifetime.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" 692385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "chromeos/chromeos_switches.h" 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url.h" 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service.h" 72e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/signin/core/common/profile_management_switches.h" 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/user_manager/user_type.h" 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/download_manager.h" 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_controller.h" 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_details.h" 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_source.h" 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_types.h" 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/url_data_source.h" 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/user_metrics.h" 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/page_zoom.h" 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/browser/extension_registry.h" 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "google_apis/gaia/gaia_auth_util.h" 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "google_apis/gaia/google_service_auth_error.h" 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/chromium_strings.h" 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/locale_settings.h" 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/theme_resources.h" 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/base/webui/web_ui_util.h" 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/advanced_options_utils.h" 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "ash/ash_switches.h" 103c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/desktop_background/user_wallpaper_delegate.h" 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/magnifier/magnifier_constants.h" 105c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "ash/shell.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" 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 1140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/chromeos/system/timezone_util.h" 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/policy/profile_policy_connector.h" 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/policy/profile_policy_connector_factory.h" 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/dbus/power_manager_client.h" 120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_map.h" 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_namespace.h" 122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_service.h" 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h" 1246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager.h" 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "policy/policy_constants.h" 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "policy/proto/device_management_backend.pb.h" 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h" 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 131c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "chrome/browser/extensions/settings_api_helpers.h" 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/auto_launch_util.h" 133010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/public/browser/browser_url_handler.h" 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 1374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/browser/local_discovery/privet_notifications.h" 1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 1394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::UserMetricsAction; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserContext; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::DownloadManager; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::OpenURLParams; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::Referrer; 146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)using extensions::Extension; 147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)using extensions::ExtensionRegistry; 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 149010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace { 150010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 151010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_WIN) 152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void AppendExtensionData(const std::string& key, 153010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension, 154010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::DictionaryValue* dict) { 155010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue); 156010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) details->SetString("id", extension ? extension->id() : std::string()); 157010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) details->SetString("name", extension ? extension->name() : std::string()); 158010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) dict->Set(key, details.release()); 159010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 160010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif // defined(OS_WIN) 161010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 162010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} // namespace 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options { 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserOptionsHandler::BrowserOptionsHandler() 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : page_initialized_(false), 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_(NULL), 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) cloud_print_mdns_ui_enabled_(false), 170effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch signin_observer_(this), 17168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) weak_ptr_factory_(this) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 175c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 17623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 1776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) cloud_print_mdns_ui_enabled_ = true; 17823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif // defined(ENABLE_SERVICE_DISCOVERY) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserOptionsHandler::~BrowserOptionsHandler() { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncService* sync_service(ProfileSyncServiceFactory:: 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetInstance()->GetForProfile(Profile::FromWebUI(web_ui()))); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sync_service) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_service->RemoveObserver(this); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_browser_worker_.get()) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->ObserverDestroyed(); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (template_url_service_) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->RemoveObserver(this); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // There may be pending file dialogs, we need to tell them that we've gone 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // away so they don't try and call back to us. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (select_folder_dialog_.get()) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_->ListenerDestroyed(); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::GetLocalizedValues(base::DictionaryValue* values) { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(values); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2006e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const bool using_new_profiles_ui = switches::IsNewAvatarMenu(); 2016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static OptionsStringResource resources[] = { 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleCloudPrint", IDS_GOOGLE_CLOUD_PRINT }, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "currentUserOnly", IDS_OPTIONS_CURRENT_USER_ONLY }, 2050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { "advancedSectionTitleCertificates", 2060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch IDS_OPTIONS_ADVANCED_SECTION_TITLE_CERTIFICATES }, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleContent", 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT }, 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleLanguages", 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_LANGUAGES }, 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitleNetwork", 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_NETWORK }, 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "advancedSectionTitlePrivacy", 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY }, 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autofillEnabled", IDS_OPTIONS_AUTOFILL_ENABLE }, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autologinEnabled", IDS_OPTIONS_PASSWORDS_AUTOLOGIN }, 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autoOpenFileTypesInfo", IDS_OPTIONS_OPEN_FILE_TYPES_AUTOMATICALLY }, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "autoOpenFileTypesResetToDefault", 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT }, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "changeHomePage", IDS_OPTIONS_CHANGE_HOME_PAGE }, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "certificatesManageButton", IDS_OPTIONS_CERTIFICATES_MANAGE_BUTTON }, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "customizeSync", IDS_OPTIONS_CUSTOMIZE_SYNC_BUTTON_LABEL }, 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultFontSizeLabel", IDS_OPTIONS_DEFAULT_FONT_SIZE_LABEL }, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultSearchManageEngines", IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES }, 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "defaultZoomFactorLabel", IDS_OPTIONS_DEFAULT_ZOOM_LEVEL_LABEL }, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "disableGData", IDS_OPTIONS_DISABLE_GDATA }, 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "disableWebServices", IDS_OPTIONS_DISABLE_WEB_SERVICES }, 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "displayOptions", 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_BUTTON_LABEL }, 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrack", IDS_OPTIONS_ENABLE_DO_NOT_TRACK }, 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmMessage", IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_TEXT }, 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmEnable", 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_ENABLE }, 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "doNotTrackConfirmDisable", 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_DISABLE }, 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationAskForSaveLocation", 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_ASKFORSAVELOCATION }, 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationBrowseTitle", 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE }, 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationChangeButton", 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DOWNLOADLOCATION_CHANGE_BUTTON }, 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "downloadLocationGroupName", IDS_OPTIONS_DOWNLOADLOCATION_GROUP_NAME }, 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "enableLogging", IDS_OPTIONS_ENABLE_LOGGING }, 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "metricsReportingResetRestart", IDS_OPTIONS_ENABLE_LOGGING_RESTART }, 2496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "easyUnlockDescription", IDS_OPTIONS_EASY_UNLOCK_DESCRIPTION }, 25023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { "easyUnlockSectionTitle", IDS_OPTIONS_EASY_UNLOCK_SECTION_TITLE }, 25123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) { "easyUnlockSetupButton", IDS_OPTIONS_EASY_UNLOCK_SETUP_BUTTON }, 2526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "easyUnlockSetupIntro", IDS_OPTIONS_EASY_UNLOCK_SETUP_INTRO }, 253c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch { "extensionControlled", IDS_OPTIONS_TAB_EXTENSION_CONTROLLED }, 254c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch { "extensionDisable", IDS_OPTIONS_TAB_EXTENSION_CONTROLLED_DISABLE }, 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsCustomizeFontsButton", 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_FONTSETTINGS_CUSTOMIZE_FONTS_BUTTON }, 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelCustom", IDS_OPTIONS_FONT_SIZE_LABEL_CUSTOM }, 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelLarge", IDS_OPTIONS_FONT_SIZE_LABEL_LARGE }, 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelMedium", IDS_OPTIONS_FONT_SIZE_LABEL_MEDIUM }, 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelSmall", IDS_OPTIONS_FONT_SIZE_LABEL_SMALL }, 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelVeryLarge", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_LARGE }, 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSizeLabelVerySmall", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_SMALL }, 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "hideAdvancedSettings", IDS_SETTINGS_HIDE_ADVANCED_SETTINGS }, 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageNtp", IDS_OPTIONS_HOMEPAGE_NTP }, 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON }, 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageUseNewTab", IDS_OPTIONS_HOMEPAGE_USE_NEWTAB }, 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "homePageUseURL", IDS_OPTIONS_HOMEPAGE_USE_URL }, 2686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "hotwordAlwaysOnSearchEnable", IDS_HOTWORD_ALWAYS_ON_SEARCH_PREF_CHKBOX }, 2696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "hotwordAudioHistoryEnable", IDS_HOTWORD_AUDIO_HISTORY_PREF_CHKBOX }, 2705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordSearchEnable", IDS_HOTWORD_SEARCH_PREF_CHKBOX }, 2715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmEnable", IDS_HOTWORD_CONFIRM_BUBBLE_ENABLE }, 2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmDisable", IDS_HOTWORD_CONFIRM_BUBBLE_DISABLE }, 2735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "hotwordConfirmMessage", IDS_HOTWORD_SEARCH_PREF_DESCRIPTION }, 274effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch { "hotwordAudioLoggingEnable", IDS_HOTWORD_AUDIO_LOGGING_ENABLE }, 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "importData", IDS_OPTIONS_IMPORT_DATA_BUTTON }, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "improveBrowsingExperience", IDS_OPTIONS_IMPROVE_BROWSING_EXPERIENCE }, 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "languageAndSpellCheckSettingsButton", 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGE_AND_INPUT_SETTINGS }, 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "linkDoctorPref", IDS_OPTIONS_LINKDOCTOR_PREF }, 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "manageAutofillSettings", IDS_OPTIONS_MANAGE_AUTOFILL_SETTINGS_LINK }, 281868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) { "manageLanguages", IDS_OPTIONS_TRANSLATE_MANAGE_LANGUAGES }, 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "managePasswords", IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK }, 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "networkPredictionEnabledDescription", 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_NETWORK_PREDICTION_ENABLED_DESCRIPTION }, 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "passwordsAndAutofillGroupName", 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_PASSWORDS_AND_FORMS_GROUP_NAME }, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "passwordManagerEnabled", IDS_OPTIONS_PASSWORD_MANAGER_ENABLE }, 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "privacyClearDataButton", IDS_OPTIONS_PRIVACY_CLEAR_DATA_BUTTON }, 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "privacyContentSettingsButton", 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_PRIVACY_CONTENT_SETTINGS_BUTTON }, 2916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "profilesCreate", using_new_profiles_ui ? 2926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_NEW_PROFILES_CREATE_BUTTON_LABEL : 2936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_PROFILES_CREATE_BUTTON_LABEL }, 2946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "profilesDelete", using_new_profiles_ui ? 2956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_NEW_PROFILES_DELETE_BUTTON_LABEL : 2966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_PROFILES_DELETE_BUTTON_LABEL }, 2976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "profilesDeleteSingle", using_new_profiles_ui ? 2986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_NEW_PROFILES_DELETE_SINGLE_BUTTON_LABEL : 2996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_PROFILES_DELETE_SINGLE_BUTTON_LABEL }, 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "profilesListItemCurrent", IDS_PROFILES_LIST_ITEM_CURRENT }, 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "profilesManage", IDS_PROFILES_MANAGE_BUTTON_LABEL }, 3020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { "profilesSupervisedDashboardTip", 3030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) IDS_PROFILES_SUPERVISED_USER_DASHBOARD_TIP }, 3042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_SETTINGS_APP) 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesAppListSwitch", IDS_SETTINGS_APP_PROFILES_SWITCH_BUTTON_LABEL }, 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelExtension", IDS_OPTIONS_EXTENSION_PROXIES_LABEL }, 3082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelSystem", IDS_OPTIONS_SYSTEM_PROXIES_LABEL, 3092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 31090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettings", IDS_RESET_PROFILE_SETTINGS_BUTTON }, 31190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettingsDescription", 31290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_RESET_PROFILE_SETTINGS_DESCRIPTION }, 31390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "resetProfileSettingsSectionTitle", 31490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_RESET_PROFILE_SETTINGS_SECTION_TITLE }, 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "safeBrowsingEnableProtection", 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION }, 317f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "safeBrowsingEnableExtendedReporting", 318f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SAFEBROWSING_ENABLE_EXTENDED_REPORTING }, 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleAppearance", IDS_APPEARANCE_GROUP_NAME }, 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleDefaultBrowser", IDS_OPTIONS_DEFAULTBROWSER_GROUP_NAME }, 3216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "sectionTitleUsers", using_new_profiles_ui ? 3226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_NEW_PROFILES_OPTIONS_GROUP_NAME : 3236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) IDS_PROFILES_OPTIONS_GROUP_NAME }, 32446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) { "sectionTitleProxy", IDS_OPTIONS_PROXY_GROUP_NAME }, 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleSearch", IDS_OPTIONS_DEFAULTSEARCH_GROUP_NAME }, 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleStartup", IDS_OPTIONS_STARTUP_GROUP_NAME }, 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleSync", IDS_SYNC_OPTIONS_GROUP_NAME }, 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "sectionTitleVoice", IDS_OPTIONS_VOICE_GROUP_NAME }, 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "settingsTitle", IDS_SETTINGS_TITLE }, 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { "showAdvancedSettings", IDS_SETTINGS_SHOW_ADVANCED_SETTINGS }, 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmMessage", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_TEXT }, 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmEnable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_ENABLE }, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingConfirmDisable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_DISABLE }, 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "spellingPref", IDS_OPTIONS_SPELLING_PREF }, 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupRestoreLastSession", IDS_OPTIONS_STARTUP_RESTORE_LAST_SESSION }, 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupSetPages", IDS_OPTIONS_STARTUP_SET_PAGES }, 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupShowNewTab", IDS_OPTIONS_STARTUP_SHOW_NEWTAB }, 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "startupShowPages", IDS_OPTIONS_STARTUP_SHOW_PAGES }, 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "suggestPref", IDS_OPTIONS_SUGGEST_PREF }, 3406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) { "supervisedUserLabel", IDS_PROFILES_LIST_SUPERVISED_USER_LABEL }, 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextInProgress", IDS_SYNC_NTP_SETUP_IN_PROGRESS }, 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextStop", IDS_SYNC_STOP_SYNCING_BUTTON_LABEL }, 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesGallery", IDS_THEMES_GALLERY_BUTTON }, 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesGalleryURL", IDS_THEMES_GALLERY_URL }, 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "tabsToLinksPref", IDS_OPTIONS_TABS_TO_LINKS_PREF }, 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "toolbarShowBookmarksBar", IDS_OPTIONS_TOOLBAR_SHOW_BOOKMARKS_BAR }, 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "toolbarShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON }, 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "translateEnableTranslate", 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_TRANSLATE_ENABLE_TRANSLATE }, 350eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS }, 352eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch { "themesNativeButton", IDS_THEMES_GTK_BUTTON }, 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themesSetClassic", IDS_THEMES_SET_CLASSIC }, 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "themes", IDS_THEMES_GROUP_NAME }, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 357558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch { "themesReset", IDS_THEMES_RESET_BUTTON }, 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityExplanation", 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_EXPLANATION }, 361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) { "accessibilitySettings", 362a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SETTINGS }, 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityHighContrast", 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_HIGH_CONTRAST_DESCRIPTION }, 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityScreenMagnifier", 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_DESCRIPTION }, 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityTapDragging", 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_TOUCHPAD_TAP_DRAGGING_DESCRIPTION }, 3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierOff", 3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_OFF }, 3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierFull", 3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_FULL }, 3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityScreenMagnifierPartial", 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_PARTIAL }, 375868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) { "accessibilityLargeCursor", 376868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_LARGE_CURSOR_DESCRIPTION }, 377a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch { "accessibilityStickyKeys", 378a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch IDS_OPTIONS_SETTINGS_ACCESSIBILITY_STICKY_KEYS_DESCRIPTION }, 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilitySpokenFeedback", 3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SPOKEN_FEEDBACK_DESCRIPTION }, 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityTitle", 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_SECTION_TITLE_ACCESSIBILITY }, 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "accessibilityVirtualKeyboard", 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_VIRTUAL_KEYBOARD_DESCRIPTION }, 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "accessibilityAlwaysShowMenu", 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SHOULD_ALWAYS_SHOW_MENU }, 3878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "accessibilityAutoclick", 3888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DESCRIPTION }, 3898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "accessibilityAutoclickDropdown", 3908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DROPDOWN_DESCRIPTION }, 3918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayExtremelyShort", 3928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_EXTREMELY_SHORT }, 3938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayVeryShort", 3948bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_VERY_SHORT }, 3958bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayShort", 3968bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_SHORT }, 3978bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayLong", 3988bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_LONG }, 3998bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) { "autoclickDelayVeryLong", 4008bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_AUTOCLICK_DELAY_VERY_LONG }, 401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "consumerManagementDescription", 402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_DESCRIPTION }, 4030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch { "consumerManagementEnrollButton", 4040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_ENROLL_BUTTON }, 405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "consumerManagementUnenrollButton", 406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch IDS_OPTIONS_CONSUMER_MANAGEMENT_UNENROLL_BUTTON }, 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch { "deviceControlTitle", IDS_OPTIONS_DEVICE_CONTROL_SECTION_TITLE }, 4084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) { "enableContentProtectionAttestation", 4094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) IDS_OPTIONS_ENABLE_CONTENT_PROTECTION_ATTESTATION }, 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetHeading", IDS_OPTIONS_FACTORY_RESET_HEADING }, 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetTitle", IDS_OPTIONS_FACTORY_RESET }, 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetRestart", IDS_OPTIONS_FACTORY_RESET_BUTTON }, 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "factoryResetDataRestart", IDS_RELAUNCH_BUTTON }, 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetWarning", IDS_OPTIONS_FACTORY_RESET_WARNING }, 4152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetHelpUrl", IDS_FACTORY_RESET_HELP_URL }, 416f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { "changePicture", IDS_OPTIONS_CHANGE_PICTURE }, 417f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { "changePictureCaption", IDS_OPTIONS_CHANGE_PICTURE_CAPTION }, 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "datetimeTitle", IDS_OPTIONS_SETTINGS_SECTION_TITLE_DATETIME }, 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "deviceGroupDescription", IDS_OPTIONS_DEVICE_GROUP_DESCRIPTION }, 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "deviceGroupPointer", IDS_OPTIONS_DEVICE_GROUP_POINTER_SECTION }, 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "mouseSpeed", IDS_OPTIONS_SETTINGS_MOUSE_SPEED_DESCRIPTION }, 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "touchpadSpeed", IDS_OPTIONS_SETTINGS_TOUCHPAD_SPEED_DESCRIPTION }, 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "enableScreenlock", IDS_OPTIONS_ENABLE_SCREENLOCKER_CHECKBOX }, 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "internetOptionsButtonTitle", IDS_OPTIONS_INTERNET_OPTIONS_BUTTON_TITLE }, 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "keyboardSettingsButtonTitle", 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_DEVICE_GROUP_KEYBOARD_SETTINGS_BUTTON_TITLE }, 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "manageAccountsButtonTitle", IDS_OPTIONS_ACCOUNTS_BUTTON_TITLE }, 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "noPointingDevices", IDS_OPTIONS_NO_POINTING_DEVICES }, 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleDevice", IDS_OPTIONS_DEVICE_GROUP_NAME }, 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "sectionTitleInternet", IDS_OPTIONS_INTERNET_OPTIONS_GROUP_LABEL }, 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncOverview", IDS_SYNC_OVERVIEW }, 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL }, 433f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmEnable", IDS_OK }, 434f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmDisable", IDS_CANCEL }, 435f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { "thirdPartyImeConfirmMessage", 436f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGES_THIRD_PARTY_WARNING_MESSAGE }, 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "timezone", IDS_OPTIONS_SETTINGS_TIMEZONE_DESCRIPTION }, 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "use24HourClock", IDS_OPTIONS_SETTINGS_USE_24HOUR_CLOCK_DESCRIPTION }, 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "proxiesConfigureButton", IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON }, 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) && defined(USE_ASH) 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "setWallpaper", IDS_SET_WALLPAPER_BUTTON }, 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "advancedSectionTitleSystem", 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_ADVANCED_SECTION_TITLE_SYSTEM }, 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS) 4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "backgroundModeCheckbox", IDS_OPTIONS_SYSTEM_ENABLE_BACKGROUND_MODE }, 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_CHROMEOS) 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "gpuModeCheckbox", 4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE }, 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "gpuModeResetRestart", 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SYSTEM_ENABLE_HARDWARE_ACCELERATION_MODE_RESTART }, 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Strings with product-name substitutions. 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncOverview", IDS_SYNC_OVERVIEW, IDS_PRODUCT_NAME }, 45790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL }, 4582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 45990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { "syncButtonTextSignIn", IDS_SYNC_START_SYNC_BUTTON_LABEL, 46090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesSingleUser", IDS_PROFILES_SINGLE_USER_MESSAGE, 4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "defaultBrowserUnknown", IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN, 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_PRODUCT_NAME }, 4655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "defaultBrowserUseAsDefault", IDS_OPTIONS_DEFAULTBROWSER_USEASDEFAULT }, 4665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { "autoLaunchText", IDS_AUTOLAUNCH_TEXT }, 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "factoryResetDescription", IDS_OPTIONS_FACTORY_RESET_DESCRIPTION, 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "languageSectionLabel", IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL, 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SHORT_PRODUCT_NAME }, 47323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 47468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) { "cloudPrintDevicesPageButton", IDS_LOCAL_DISCOVERY_DEVICES_PAGE_BUTTON }, 47568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) { "cloudPrintEnableNotificationsLabel", 47668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_LOCAL_DISCOVERY_NOTIFICATIONS_ENABLE_CHECKBOX_LABEL }, 47768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(ENABLE_SETTINGS_APP) 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static OptionsStringResource app_resources[] = { 4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncOverview", IDS_SETTINGS_APP_SYNC_OVERVIEW }, 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "syncButtonTextStart", IDS_SYNC_START_SYNC_BUTTON_LABEL, 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "profilesSingleUser", IDS_PROFILES_SINGLE_USER_MESSAGE, 4862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "languageSectionLabel", IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL, 4882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { "proxiesLabelSystem", IDS_OPTIONS_SYSTEM_PROXIES_LABEL, 4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_SETTINGS_APP_LAUNCHER_PRODUCT_NAME }, 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 4925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* app_values = NULL; 4932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CHECK(values->GetDictionary(kSettingsAppKey, &app_values)); 4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterStrings(app_values, app_resources, arraysize(app_resources)); 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterStrings(values, resources, arraysize(resources)); 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterTitle(values, "doNotTrackConfirmOverlay", 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_ENABLE_DO_NOT_TRACK_BUBBLE_TITLE); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterTitle(values, "spellingConfirmOverlay", 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_CONTENT_CONTEXT_SPELLING_ASK_GOOGLE); 502c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#if defined(ENABLE_FULL_PRINTING) 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterCloudPrintValues(values); 504c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("syncLearnMoreURL", chrome::kSyncLearnMoreURL); 5075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 omnibox_url = base::ASCIIToUTF16(chrome::kOmniboxLearnMoreURL); 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString( 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultSearchGroupLabel", 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16(IDS_SEARCH_PREF_EXPLANATION, omnibox_url)); 5115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("hotwordLearnMoreURL", chrome::kHotwordLearnMoreURL); 5125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RegisterTitle(values, "hotwordConfirmOverlay", 513effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch IDS_HOTWORD_CONFIRM_BUBBLE_TITLE); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 516f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 5175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string username = profile->GetProfileName(); 5185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (username.empty()) { 5195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) user_manager::User* user = 520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos::ProfileHelper::Get()->GetUserByProfile(profile); 521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (user && (user->GetType() != user_manager::USER_TYPE_GUEST)) 5225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) username = user->email(); 5235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 5255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!username.empty()) 5265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) username = gaia::SanitizeEmail(gaia::CanonicalizeEmail(username)); 5275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 528f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) values->SetString("username", username); 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pass along sync status early so it will be available during page init. 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->Set("syncData", GetSyncStateDictionary().release()); 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The Reset Profile Settings feature makes no sense for an off-the-record 5355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // profile (e.g. in Guest mode on Chrome OS), so hide it. 5365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetBoolean("enableResetProfileSettings", 5375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !Profile::FromWebUI(web_ui())->IsOffTheRecord()); 5385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("privacyLearnMoreURL", chrome::kPrivacyLearnMoreURL); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("doNotTrackLearnMoreURL", chrome::kDoNotTrackLearnMoreURL); 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !defined(OS_CHROMEOS) 5435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 5445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) values->SetBoolean("metricsReportingEnabledAtStart", pref_service->GetBoolean( 5455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) prefs::kMetricsReportingEnabled)); 5465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 5475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(pastarmovj): replace this with a call to the CrosSettings list 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // handling functionality to come. 5510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) values->Set("timezoneList", chromeos::system::GetTimezoneList().release()); 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->SetString("accessibilityLearnMoreURL", 5542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::kChromeAccessibilityHelpURL); 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 556a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::string settings_url = std::string("chrome-extension://") + 557a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) extension_misc::kChromeVoxExtensionId + 558a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) chrome::kChromeAccessibilitySettingsURL; 559a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 560a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) values->SetString("accessibilitySettingsURL", 561a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) settings_url); 562a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 5634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) values->SetString("contentProtectionAttestationLearnMoreURL", 5644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome::kAttestationForContentProtectionLearnMoreURL); 5654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates magnifierList. 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> magnifier_list(new base::ListValue); 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> option_full(new base::ListValue); 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_full->AppendInteger(ash::MAGNIFIER_FULL); 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_full->AppendString(l10n_util::GetStringUTF16( 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_FULL)); 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) magnifier_list->Append(option_full.release()); 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::ListValue> option_partial(new base::ListValue); 5762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_partial->AppendInteger(ash::MAGNIFIER_PARTIAL); 5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option_partial->Append(new base::StringValue(l10n_util::GetStringUTF16( 5782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_PARTIAL))); 5792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) magnifier_list->Append(option_partial.release()); 5802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->Set("magnifierList", magnifier_list.release()); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetString("macPasswordsWarning", 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MAC_WARNING)); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->SetBoolean("multiple_profiles", 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->profile_manager()->GetNumberOfProfiles() > 1); 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (ShouldShowMultiProfilesUserList()) 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) values->Set("profilesInfo", GetProfilesInfoList().release()); 5932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) values->SetBoolean("profileIsSupervised", 595f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())->IsSupervised()); 5962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if !defined(OS_CHROMEOS) 5982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) values->SetBoolean( 5992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "gpuEnabledAtStart", 6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_browser_process->gpu_mode_manager()->initial_gpu_mode_pref()); 6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 60268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 60323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 6045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetBoolean("cloudPrintHideNotificationsCheckbox", 6055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) !local_discovery::PrivetNotificationService::IsEnabled()); 60668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 60768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetBoolean("cloudPrintShowMDnsOptions", 6095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cloud_print_mdns_ui_enabled_); 61068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("cloudPrintLearnMoreURL", chrome::kCloudPrintLearnMoreURL); 61268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 6135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) values->SetString("languagesLearnMoreURL", 6145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) chrome::kLanguageSettingsLearnMoreUrl); 61523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 61623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) values->SetBoolean( 6175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "easyUnlockAllowed", 6185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->IsAllowed()); 61923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) values->SetString("easyUnlockLearnMoreURL", chrome::kEasyUnlockLearnMoreUrl); 6200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 6216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#if defined(OS_CHROMEOS) 6220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch values->SetBoolean( 6230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch "consumerManagementEnabled", 6240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch CommandLine::ForCurrentProcess()->HasSwitch( 6250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch chromeos::switches::kEnableConsumerManagement)); 626f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 6275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const enterprise_management::PolicyData* policy_data = 6285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chromeos::DeviceSettingsService::Get()->policy_data(); 6295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) values->SetBoolean( 6305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "consumerManagementEnrolled", 6315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy_data && 6325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) policy_data->management_mode() == 6335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) enterprise_management::PolicyData::CONSUMER_MANAGED); 6345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 635f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) RegisterTitle(values, "thirdPartyImeConfirmOverlay", 636f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) IDS_OPTIONS_SETTINGS_LANGUAGES_THIRD_PARTY_WARNING_TITLE); 63723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif 6386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) values->SetBoolean("showSetDefault", ShouldShowSetDefaultBrowser()); 6406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 6416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) values->SetBoolean("allowAdvancedSettings", ShouldAllowAdvancedSettings()); 642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch values->SetBoolean("websiteSettingsManagerEnabled", 644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CommandLine::ForCurrentProcess()->HasSwitch( 645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch switches::kEnableWebsiteSettingsManager)); 6466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 6476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) values->SetBoolean("usingNewProfilesUI", using_new_profiles_ui); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 650c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#if defined(ENABLE_FULL_PRINTING) 6515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::RegisterCloudPrintValues( 6525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* values) { 65368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) values->SetString("cloudPrintOptionLabel", 65468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) l10n_util::GetStringFUTF16( 65568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) IDS_CLOUD_PRINT_CHROMEOS_OPTION_LABEL, 65668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT))); 6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 658c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif // defined(ENABLE_FULL_PRINTING) 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::RegisterMessages() { 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "becomeDefaultBrowser", 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::BecomeDefaultBrowser, 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "setDefaultSearchEngine", 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetDefaultSearchEngine, 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 670868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) "deleteProfile", 671868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::DeleteProfile, 672868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::Unretained(this))); 673868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "themesReset", 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ThemesReset, 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 677ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch web_ui()->RegisterMessageCallback( 678ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "requestProfilesInfo", 679ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Bind(&BrowserOptionsHandler::HandleRequestProfilesInfo, 680ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Unretained(this))); 681eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 683eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "themesSetNative", 684eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::Bind(&BrowserOptionsHandler::ThemesSetNative, 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "selectDownloadLocation", 6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleSelectDownloadLocation, 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "autoOpenFileTypesAction", 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleAutoOpenButton, 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultFontSizeAction", 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleDefaultFontSize, 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "defaultZoomFactorAction", 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleDefaultZoomFactor, 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(USE_NSS) && !defined(USE_OPENSSL) 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "showManageSSLCertificates", 7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ShowManageSSLCertificates, 7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "openWallpaperManager", 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleOpenWallpaperManager, 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "virtualKeyboardChange", 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::VirtualKeyboardChangeCallback, 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback( 719effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "onPowerwashDialogShow", 720effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Bind(&BrowserOptionsHandler::OnPowerwashDialogShow, 721effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Unretained(this))); 722effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch web_ui()->RegisterMessageCallback( 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "performFactoryResetRestart", 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::PerformFactoryResetRestart, 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 7262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 7272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 7282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "restartBrowser", 7292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleRestartBrowser, 7302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 731c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch web_ui()->RegisterMessageCallback( 732c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch "showNetworkProxySettings", 733c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch base::Bind(&BrowserOptionsHandler::ShowNetworkProxySettings, 734c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch base::Unretained(this))); 735c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#endif // defined(OS_CHROMEOS) 73668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 73723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 7384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) if (cloud_print_mdns_ui_enabled_) { 73968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) web_ui()->RegisterMessageCallback( 74068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) "showCloudPrintDevicesPage", 74168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ShowCloudPrintDevicesPage, 74268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::Unretained(this))); 74368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 74468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 7455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) web_ui()->RegisterMessageCallback( 7465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "requestHotwordAvailable", 7475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleRequestHotwordAvailable, 7485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::Unretained(this))); 749a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 750a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_ui()->RegisterMessageCallback( 75123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) "launchEasyUnlockSetup", 75223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::HandleLaunchEasyUnlockSetup, 75323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Unretained(this))); 754c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 755c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch web_ui()->RegisterMessageCallback( 756c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch "refreshExtensionControlIndicators", 757c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind( 758010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &BrowserOptionsHandler::HandleRefreshExtensionControlIndicators, 759c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Unretained(this))); 760c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)void BrowserOptionsHandler::Uninitialize() { 7648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) registrar_.RemoveAll(); 765010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_WIN) 766010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))->RemoveObserver(this); 767010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif 7688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 7698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::OnStateChanged() { 7713240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UpdateSyncState(); 7722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 7732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 774effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid BrowserOptionsHandler::GoogleSigninSucceeded(const std::string& username, 775effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::string& password) { 776effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch OnStateChanged(); 777effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 778effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 779effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid BrowserOptionsHandler::GoogleSignedOut(const std::string& username) { 780effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch OnStateChanged(); 781effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 782effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::PageLoadStarted() { 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_initialized_ = false; 7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::InitializeHandler() { 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncService* sync_service( 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile)); 793effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(blundell): Use a ScopedObserver to observe the PSS so that cleanup on 794effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // destruction is automatic. 7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sync_service) 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_service->AddObserver(this); 7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 798effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerBase* signin_manager( 799effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerFactory::GetInstance()->GetForProfile(profile)); 800effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (signin_manager) 801effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch signin_observer_.Add(signin_manager); 802effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create our favicon data source. 8042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::URLDataSource::Add( 8052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile, new FaviconSource(profile, FaviconSource::FAVICON)); 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default_browser_policy_.Init( 8082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDefaultBrowserSettingEnabled, 8092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) g_browser_process->local_state(), 8102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::UpdateDefaultBrowserState, 8112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<ThemeService>( 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile))); 8225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED, 8235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::Source<Profile>(profile)); 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTemplateUrlServiceObserver(); 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 827010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::Get(Profile::FromWebUI(web_ui()))->AddObserver(this); 828010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 8305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!command_line.HasSwitch(switches::kUserDataDir)) { 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::CheckAutoLaunch, 8332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) weak_ptr_factory_.GetWeakPtr(), 8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile->GetPath())); 8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) auto_open_files_.Init( 8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDownloadExtensionsToOpen, prefs, 8402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupAutoOpenFileTypes, 8412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default_zoom_level_.Init( 8432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kDefaultZoomLevel, prefs, 8442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupPageZoomSelector, 8452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 8462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Init(prefs); 8472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Add( 8486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) prefs::kNetworkPredictionOptions, 8496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupNetworkPredictionControl, 8506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::Unretained(this))); 8516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) profile_pref_registrar_.Add( 85290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs::kWebKitDefaultFontSize, 85390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupFontSizeSelector, 85490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Unretained(this))); 85590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile_pref_registrar_.Add( 85690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs::kWebKitDefaultFixedFontSize, 85790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupFontSizeSelector, 85890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Unretained(this))); 85990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) profile_pref_registrar_.Add( 860f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) prefs::kSupervisedUsers, 8610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupManagingSupervisedUsers, 8620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::Unretained(this))); 8630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) profile_pref_registrar_.Add( 8642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kSigninAllowed, 8652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnSigninAllowedPrefChange, 8662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 86723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) profile_pref_registrar_.Add( 86823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) prefs::kEasyUnlockPairing, 86923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupEasyUnlock, 87023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::Unretained(this))); 871c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 872c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 873c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profile_pref_registrar_.Add( 874c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch prefs::kURLsToRestoreOnStartup, 875c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind(&BrowserOptionsHandler::SetupExtensionControlledIndicators, 876010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 877c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profile_pref_registrar_.Add( 878c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch prefs::kHomePage, 879c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch base::Bind(&BrowserOptionsHandler::SetupExtensionControlledIndicators, 880010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::Unretained(this))); 881c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 882c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 883a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_CHROMEOS) 884a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (!policy_registrar_) { 885a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_registrar_.reset(new policy::PolicyChangeRegistrar( 886a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::ProfilePolicyConnectorFactory::GetForProfile(profile)-> 887a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_service(), 888a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, std::string()))); 889a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_registrar_->Observe( 890a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::key::kUserAvatarImage, 891a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnUserImagePolicyChanged, 892a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::Unretained(this))); 893a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) policy_registrar_->Observe( 894a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) policy::key::kWallpaperImage, 895a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::OnWallpaperPolicyChanged, 896a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Unretained(this))); 897a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 898a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#else // !defined(OS_CHROMEOS) 8992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile_pref_registrar_.Add( 9002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kProxy, 9012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&BrowserOptionsHandler::SetupProxySettingsSection, 9022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::InitializePage() { 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) page_initialized_ = true; 908c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnTemplateURLServiceChanged(); 910c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ObserveThemeChanged(); 9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnStateChanged(); 9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDefaultBrowserState(); 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupMetricsReportingSettingVisibility(); 9166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) SetupNetworkPredictionControl(); 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupFontSizeSelector(); 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupPageZoomSelector(); 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupAutoOpenFileTypes(); 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupProxySettingsSection(); 921f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SetupManageCertificatesSection(); 9220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) SetupManagingSupervisedUsers(); 92323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) SetupEasyUnlock(); 924010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 925c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupAccessibilityFeatures(); 9285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::BrowserPolicyConnectorChromeOS* connector = 9295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) g_browser_process->platform_part()->browser_policy_connector_chromeos(); 9305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!connector->IsEnterpriseManaged() && 9316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !user_manager::UserManager::Get()->IsLoggedInAsGuest() && 9326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !user_manager::UserManager::Get()->IsLoggedInAsSupervisedUser()) { 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.enableFactoryResetSection"); 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 936a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 9375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 938a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnAccountPictureManagedChanged( 9395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::ProfilePolicyConnectorFactory::GetForProfile(profile)-> 940a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy_service()->GetPolicies( 941a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, 942a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::string())) 943a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) .Get(policy::key::kUserAvatarImage)); 944a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 945a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OnWallpaperManagedChanged( 946a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) chromeos::WallpaperManager::Get()->IsPolicyControlled( 9476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetActiveUser()->email())); 9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::CheckAutoLaunch( 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::WeakPtr<BrowserOptionsHandler> weak_this, 9542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path) { 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 956e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DCHECK_CURRENTLY_ON(BrowserThread::FILE); 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Auto-launch is not supported for secondary profiles yet. 9595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (profile_path.BaseName().value() != 9605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ASCIIToUTF16(chrome::kInitialProfile)) { 9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 9625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Pass in weak pointer to this to avoid race if BrowserOptionsHandler is 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deleted. 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::CheckAutoLaunchCallback, 9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) weak_this, 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_launch_trial::IsInAutoLaunchGroup(), 9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) auto_launch_util::AutoStartRequested( 9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_path.BaseName().value(), 9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, // Window requested. 9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath()))); 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::CheckAutoLaunchCallback( 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_in_auto_launch_group, 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool will_launch_at_login) { 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 981e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DCHECK_CURRENTLY_ON(BrowserThread::UI); 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (is_in_auto_launch_group) { 9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback("toggleAutoLaunch", 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&BrowserOptionsHandler::ToggleAutoLaunch, 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue enabled(will_launch_at_login); 9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAutoLaunchState", 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled); 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool BrowserOptionsHandler::ShouldShowSetDefaultBrowser() { 9965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 9975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // We're always the default browser on ChromeOS. 9985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 9995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 10005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 10015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return !profile->IsGuestSession(); 10025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 10035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 10045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 10055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool BrowserOptionsHandler::ShouldShowMultiProfilesUserList() { 10065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 10075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // On Chrome OS we use different UI for multi-profiles. 10085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else 10105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (helper::GetDesktopType(web_ui()) != chrome::HOST_DESKTOP_TYPE_NATIVE) 10115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 10135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (profile->IsGuestSession()) 10145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 10155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return profiles::IsMultipleProfilesEnabled(); 10165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 10175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 10185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1019e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochbool BrowserOptionsHandler::ShouldAllowAdvancedSettings() { 1020e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#if defined(OS_CHROMEOS) 1021e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // ChromeOS handles guest-mode restrictions in a different manner. 1022e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return true; 1023e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#else 1024e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return !Profile::FromWebUI(web_ui())->IsGuestSession(); 1025e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#endif 1026e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 1027e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::UpdateDefaultBrowserState() { 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellIntegration::DefaultWebClientState state = 10312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShellIntegration::GetDefaultBrowser(); 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int status_string_id; 10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (state == ShellIntegration::IS_DEFAULT) 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; 10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else if (state == ShellIntegration::NOT_DEFAULT) 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT; 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN; 10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetDefaultBrowserUIString(status_string_id); 10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->StartCheckIsDefault(); 10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::BecomeDefaultBrowser(const base::ListValue* args) { 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the default browser setting is managed then we should not be able to 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // call this function. 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_browser_policy_.IsManaged()) 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SetAsDefaultBrowser")); 10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ShellIntegration::SetAsDefaultBrowser()) 10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDefaultBrowserState(); 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_browser_worker_->StartSetAsDefault(); 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback takes care of updating UI. 10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the user attempted to make Chrome the default browser, then he/she 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // arguably wants to be notified when that changes. 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(prefs::kCheckDefaultBrowser, true); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int BrowserOptionsHandler::StatusStringIdForState( 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellIntegration::DefaultWebClientState state) { 10692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (state == ShellIntegration::IS_DEFAULT) 10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; 10712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (state == ShellIntegration::NOT_DEFAULT) 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT; 10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN; 10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultWebClientUIState( 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShellIntegration::DefaultWebClientUIState state) { 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int status_string_id; 10791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 10801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (state == ShellIntegration::STATE_IS_DEFAULT) { 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT; 10821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else if (state == ShellIntegration::STATE_NOT_DEFAULT) { 10831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (ShellIntegration::CanSetAsDefaultBrowser() == 10841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ShellIntegration::SET_DEFAULT_NOT_ALLOWED) { 10851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_SXS; 10861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else { 10871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT; 10881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 10891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else if (state == ShellIntegration::STATE_UNKNOWN) { 10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_string_id = IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN; 10911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } else { 10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; // Still processing. 10931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetDefaultBrowserUIString(status_string_id); 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BrowserOptionsHandler::IsInteractiveSetDefaultPermitted() { 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; // This is UI so we can allow it. 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultBrowserUIString(int status_string_id) { 11032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::StringValue status_string( 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16(status_string_id, 11052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue is_default( 11082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT); 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue can_be_default( 11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !default_browser_policy_.IsManaged() && 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT || 11132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string_id == IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT)); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.updateDefaultBrowserState", 11172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) status_string, is_default, can_be_default); 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::OnTemplateURLServiceChanged() { 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!template_url_service_ || !template_url_service_->loaded()) 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TemplateURL* default_url = 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetDefaultSearchProvider(); 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int default_index = -1; 11285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue search_engines; 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService::TemplateURLVector model_urls( 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetTemplateURLs()); 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < model_urls.size(); ++i) { 1132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (!model_urls[i]->ShowInDefaultList( 1133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) template_url_service_->search_terms_data())) 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) continue; 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* entry = new base::DictionaryValue(); 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("name", model_urls[i]->short_name()); 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetInteger("index", i); 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) search_engines.Append(entry); 11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (model_urls[i] == default_url) 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_index = i; 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->CallJavascriptFunction( 11452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "BrowserOptions.updateSearchEngines", 11462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) search_engines, 11472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue(default_index), 11482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue( 1149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) template_url_service_->is_default_search_managed() || 1150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) template_url_service_->IsExtensionControlledDefaultSearch())); 1151c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1152010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::SetDefaultSearchEngine( 11565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int selected_index = -1; 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!ExtractIntegerValue(args, &selected_index)) { 11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLService::TemplateURLVector model_urls( 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->GetTemplateURLs()); 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (selected_index >= 0 && 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_index < static_cast<int>(model_urls.size())) 11675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu template_url_service_->SetUserSelectedDefaultSearchProvider( 11685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu model_urls[selected_index]); 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SearchEngineChanged")); 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::AddTemplateUrlServiceObserver() { 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_ = 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLServiceFactory::GetForProfile(Profile::FromWebUI(web_ui())); 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (template_url_service_) { 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->Load(); 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) template_url_service_->AddObserver(this); 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1182010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::OnExtensionLoaded( 1183010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* browser_context, 1184010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension) { 1185010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1186010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1187010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1188010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::OnExtensionUnloaded( 1189010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* browser_context, 1190010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Extension* extension, 1191010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extensions::UnloadedExtensionInfo::Reason reason) { 1192010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1193010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1194010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::Observe( 11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int type, 11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) { 11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Notifications are used to update the UI dynamically when settings change in 12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the background. If the UI is currently being loaded, no dynamic updates are 12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // possible (as the DOM and JS are not fully loaded) or necessary (as 12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // InitializePage() will update the UI at the end of the load). 12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!page_initialized_) 12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) switch (type) { 12072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: 12082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ObserveThemeChanged(); 12092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 12112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED: 12122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateAccountPicture(); 12132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 12152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED: 12168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) SendProfilesInfo(); 12172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED: 12192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Update our sync/signin status display. 12202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OnStateChanged(); 12212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 12222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default: 12232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ToggleAutoLaunch(const base::ListValue* args) { 12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!auto_launch_trial::IsInAutoLaunchGroup()) 12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool enable; 12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK_EQ(args->GetSize(), 1U); 12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(args->GetBoolean(0, &enable)); 12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserThread::PostTask( 12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::BrowserThread::FILE, FROM_HERE, 12392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enable ? 12402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&auto_launch_util::EnableForegroundStartAtLogin, 12412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile->GetPath().BaseName().value(), base::FilePath()) : 12422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&auto_launch_util::DisableForegroundStartAtLogin, 12432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile->GetPath().BaseName().value())); 12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // OS_WIN 12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)scoped_ptr<base::ListValue> BrowserOptionsHandler::GetProfilesInfoList() { 12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileInfoCache& cache = 12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->profile_manager()->GetProfileInfoCache(); 12505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::ListValue> profile_info_list(new base::ListValue); 12512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath current_profile_path = 12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()->GetPath(); 12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) { 12555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue* profile_value = new base::DictionaryValue(); 12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i)); 12572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path = cache.GetPathOfProfileAtIndex(i); 12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->Set("filePath", base::CreateFilePathValue(profile_path)); 12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetBoolean("isCurrentProfile", 12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_path == current_profile_path); 12615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) profile_value->SetBoolean("isSupervised", 12625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cache.ProfileIsSupervisedAtIndex(i)); 12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_gaia_picture = 12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.IsUsingGAIAPictureOfProfileAtIndex(i) && 12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.GetGAIAPictureOfProfileAtIndex(i); 12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (is_gaia_picture) { 12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Image icon = profiles::GetAvatarIconForWebUI( 12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache.GetAvatarIconOfProfileAtIndex(i), true); 12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("iconURL", 12712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) webui::GetBitmapDataUrl(icon.AsBitmap())); 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i); 12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_value->SetString("iconURL", 1275c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch profiles::GetDefaultAvatarIconUrl(icon_index)); 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_info_list->Append(profile_value); 12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return profile_info_list.Pass(); 12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SendProfilesInfo() { 12855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!ShouldShowMultiProfilesUserList()) 1286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesInfo", 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *GetProfilesInfoList()); 12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::DeleteProfile(const base::ListValue* args) { 1292868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DCHECK(args); 12935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::Value* file_path_value; 1294868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!args->Get(0, &file_path_value)) 1295868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return; 1296868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1297868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) base::FilePath file_path; 1298868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!base::GetValueAsFilePath(*file_path_value, &file_path)) 1299868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return; 130068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) helper::DeleteProfileAtPath(file_path, web_ui()); 13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::ObserveThemeChanged() { 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeService* theme_service = ThemeServiceFactory::GetForProfile(profile); 1306cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_system_theme = false; 1307eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1308eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 1309f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool profile_is_supervised = profile->IsSupervised(); 1310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) is_system_theme = theme_service->UsingSystemTheme(); 1311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::FundamentalValue native_theme_enabled(!is_system_theme && 1312f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) !profile_is_supervised); 1313eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch web_ui()->CallJavascriptFunction("BrowserOptions.setNativeThemeButtonEnabled", 1314eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch native_theme_enabled); 13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1317cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool is_classic_theme = !is_system_theme && 1318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch theme_service->UsingDefaultTheme(); 1319558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch base::FundamentalValue enabled(!is_classic_theme); 13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setThemesResetButtonEnabled", 13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled); 13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ThemesReset(const base::ListValue* args) { 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 1326eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::RecordAction(UserMetricsAction("Options_ThemesReset")); 13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile)->UseDefaultTheme(); 13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1330eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 13315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ThemesSetNative(const base::ListValue* args) { 13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_GtkThemeSet")); 13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 1334cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ThemeServiceFactory::GetForProfile(profile)->UseSystemTheme(); 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::UpdateAccountPicture() { 13406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) std::string email = 13416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetLoggedInUser()->email(); 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!email.empty()) { 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture"); 13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue email_value(email); 13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture", 13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) email_value); 13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1349a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1350a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void BrowserOptionsHandler::OnAccountPictureManagedChanged(bool managed) { 1351a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setAccountPictureManaged", 1352a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::FundamentalValue(managed)); 1353a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 1354a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1355a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BrowserOptionsHandler::OnWallpaperManagedChanged(bool managed) { 1356a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setWallpaperManaged", 1357a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::FundamentalValue(managed)); 1358a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)scoped_ptr<base::DictionaryValue> 13625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)BrowserOptionsHandler::GetSyncStateDictionary() { 13635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<base::DictionaryValue> sync_status(new base::DictionaryValue); 13642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 13652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (profile->IsGuestSession()) { 13662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Cannot display signin status when running in guest mode on chromeos 13672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // because there is no SigninManager. 13682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("signinAllowed", false); 13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sync_status.Pass(); 13702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1371cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 1372f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) sync_status->SetBoolean("supervisedUser", profile->IsSupervised()); 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool signout_prohibited = false; 1375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if !defined(OS_CHROMEOS) 13762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Signout is not allowed if the user has policy (crbug.com/172204). 1377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) signout_prohibited = 1378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SigninManagerFactory::GetForProfile(profile)->IsSignoutProhibited(); 1379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif 1380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1381868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ProfileSyncService* service = 1382868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile); 1383558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch SigninManagerBase* signin = SigninManagerFactory::GetForProfile(profile); 1384558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch DCHECK(signin); 1385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) sync_status->SetBoolean("signoutAllowed", !signout_prohibited); 13862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("signinAllowed", signin->IsSigninAllowed()); 1387a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) sync_status->SetBoolean("syncSystemEnabled", (service != NULL)); 13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("setupCompleted", 13892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && service->HasSyncSetupCompleted()); 13902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("setupInProgress", 13912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && !service->IsManaged() && service->FirstSetupInProgress()); 13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1393a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 status_label; 1394a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 link_label; 13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool status_has_error = sync_ui_util::GetStatusLabels( 13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) == 13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_ui_util::SYNC_ERROR; 13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetString("statusText", status_label); 13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetString("actionLinkText", link_label); 14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("hasError", status_has_error); 14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("managed", service && service->IsManaged()); 14032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sync_status->SetBoolean("signedIn", 14042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) !signin->GetAuthenticatedUsername().empty()); 14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sync_status->SetBoolean("hasUnrecoverableError", 14062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service && service->HasUnrecoverableError()); 14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sync_status.Pass(); 14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::HandleSelectDownloadLocation( 14125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_ = ui::SelectFileDialog::Create( 14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); 14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::SelectFileDialog::FileTypeInfo info; 14172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) info.support_drive = true; 14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) select_folder_dialog_->SelectFile( 14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::SelectFileDialog::SELECT_FOLDER, 14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE), 14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetFilePath(prefs::kDownloadDefaultDirectory), 1422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &info, 1423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 0, 1424c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath::StringType(), 1425010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->GetWebContents()->GetTopLevelNativeWindow(), 1426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NULL); 14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void BrowserOptionsHandler::FileSelected(const base::FilePath& path, int index, 14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* params) { 14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_SetDownloadDirectory")); 14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, path); 1434868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) pref_service->SetFilePath(prefs::kSaveFileDefaultDirectory, path); 14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::TouchpadExists(bool exists) { 14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue val(exists); 14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showTouchpadControls", val); 14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::MouseExists(bool exists) { 14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue val(exists); 14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showMouseControls", val); 14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1447a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1448a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)void BrowserOptionsHandler::OnUserImagePolicyChanged( 1449a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::Value* previous_policy, 1450a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::Value* current_policy) { 1451a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool had_policy = previous_policy; 1452a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool has_policy = current_policy; 1453a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (had_policy != has_policy) 1454a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OnAccountPictureManagedChanged(has_policy); 1455a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 1456a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1457a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void BrowserOptionsHandler::OnWallpaperPolicyChanged( 1458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::Value* previous_policy, 1459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::Value* current_policy) { 1460a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool had_policy = previous_policy; 1461a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const bool has_policy = current_policy; 1462a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (had_policy != has_policy) 1463a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) OnWallpaperManagedChanged(has_policy); 1464a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1465a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1466effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid BrowserOptionsHandler::OnPowerwashDialogShow( 1467effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const base::ListValue* args) { 1468effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch UMA_HISTOGRAM_ENUMERATION( 1469effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch "Reset.ChromeOS.PowerwashDialogShown", 1470effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chromeos::reset::DIALOG_FROM_OPTIONS, 1471effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chromeos::reset::DIALOG_VIEW_TYPE_SIZE); 1472effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 1473effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1474a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14763240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochvoid BrowserOptionsHandler::UpdateSyncState() { 14773240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState", 14783240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch *GetSyncStateDictionary()); 14793240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch} 14803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 14813240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochvoid BrowserOptionsHandler::OnSigninAllowedPrefChange() { 14823240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch UpdateSyncState(); 14833240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch} 14843240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch 14855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleAutoOpenButton(const base::ListValue* args) { 14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ResetAutoOpenFiles")); 14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadManager* manager = BrowserContext::GetDownloadManager( 14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()); 14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (manager) 14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen(); 14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleDefaultFontSize(const base::ListValue* args) { 14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int font_size; 14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExtractIntegerValue(args, &font_size)) { 14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (font_size > 0) { 149790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 149890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->SetInteger(prefs::kWebKitDefaultFontSize, font_size); 14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetupFontSizeSelector(); 15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleDefaultZoomFactor( 15055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double zoom_factor; 15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExtractDoubleValue(args, &zoom_factor)) { 150858e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch default_zoom_level_.SetValue(content::ZoomFactorToZoomLevel(zoom_factor)); 15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRestartBrowser(const base::ListValue* args) { 1513f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_WIN) && defined(USE_ASH) 1514f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // If hardware acceleration is disabled then we need to force restart 1515f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // browser in desktop mode. 1516f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // TODO(shrikant): Remove this once we fix start mode logic for browser. 1517f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Currently there are issues with determining correct browser mode 1518f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // at startup. 1519f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (chrome::GetActiveDesktop() == chrome::HOST_DESKTOP_TYPE_ASH) { 1520f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 1521f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!pref_service->GetBoolean(prefs::kHardwareAccelerationModeEnabled)) { 1522f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::AttemptRestartToDesktopMode(); 1523f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return; 1524f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1525f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1526f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 1527f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_WIN) 15295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // On Windows Breakpad will upload crash reports if the breakpad pipe name 15305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // environment variable is defined. So we undefine this environment variable 15315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // before restarting, as the restarted processes will inherit their 15325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // environment variables from ours, thus suppressing crash uploads. 15335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 15345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!pref_service->GetBoolean(prefs::kMetricsReportingEnabled)) { 15355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) HMODULE exe_module = GetModuleHandle(chrome::kBrowserProcessExecutableName); 15365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (exe_module) { 15375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) typedef void (__cdecl *ClearBreakpadPipeEnvVar)(); 15385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ClearBreakpadPipeEnvVar clear = reinterpret_cast<ClearBreakpadPipeEnvVar>( 15395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetProcAddress(exe_module, "ClearBreakpadPipeEnvironmentVariable")); 15405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (clear) 15415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) clear(); 15425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 15435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 15445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 15455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 15462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::AttemptRestart(); 15472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 15482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 15495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRequestProfilesInfo( 15505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 1551ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SendProfilesInfo(); 1552ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 1553ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 15555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowNetworkProxySettings( 15565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ShowProxySettings")); 15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AdvancedOptionsUtilities::ShowNetworkProxySettings( 15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()); 15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(USE_NSS) && !defined(USE_OPENSSL) 15645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowManageSSLCertificates( 15655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_ManageSSLCertificates")); 15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AdvancedOptionsUtilities::ShowManageSSLCertificates( 15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()); 15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 157223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SERVICE_DISCOVERY) 157368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 15745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::ShowCloudPrintDevicesPage( 15755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 157668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) content::RecordAction(UserMetricsAction("Options_CloudPrintDevicesPage")); 157768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Navigate in current tab to devices page. 157868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) OpenURLParams params( 157968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) GURL(chrome::kChromeUIDevicesURL), Referrer(), 158068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) CURRENT_TAB, content::PAGE_TRANSITION_LINK, false); 158168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) web_ui()->GetWebContents()->OpenURL(params); 158268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 158368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 158468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif 158568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 15865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::HandleRequestHotwordAvailable( 15875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 15885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Profile* profile = Profile::FromWebUI(web_ui()); 15895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string group = base::FieldTrialList::FindFullName("VoiceTrigger"); 15906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::FundamentalValue enabled( 15916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) profile->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled)); 1592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (group != "" && group != "Disabled" && 1593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HotwordServiceFactory::IsHotwordAllowed(profile)) { 1594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Update the current error value. 1595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HotwordServiceFactory::IsServiceAvailable(profile); 1596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int error = HotwordServiceFactory::GetCurrentError(profile); 1597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!error) { 15986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showHotwordSection", 15996e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) enabled); 1600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else { 1601cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::string16 hotword_help_url = 1602cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::ASCIIToUTF16(chrome::kHotwordLearnMoreURL); 1603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::StringValue error_message(l10n_util::GetStringUTF16(error)); 1604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (error == IDS_HOTWORD_GENERIC_ERROR_MESSAGE) { 1605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch error_message = base::StringValue( 1606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch l10n_util::GetStringFUTF16(error, hotword_help_url)); 1607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 1608cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.showHotwordSection", 1609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch enabled, error_message); 1610cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 16116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) if (CommandLine::ForCurrentProcess()->HasSwitch( 16126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) switches::kEnableExperimentalHotwording)) { 16136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction( 16146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) "BrowserOptions.showHotwordAlwaysOnSection"); 16156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 16165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 16175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 16185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 161923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void BrowserOptionsHandler::HandleLaunchEasyUnlockSetup( 162023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const base::ListValue* args) { 16215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->LaunchSetup(); 162223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 162323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1624010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::HandleRefreshExtensionControlIndicators( 1625010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const base::ListValue* args) { 1626010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SetupExtensionControlledIndicators(); 1627010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1628010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::HandleOpenWallpaperManager( 16315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 1632c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ash::Shell::GetInstance()->user_wallpaper_delegate()->OpenSetWallpaperPage(); 16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::VirtualKeyboardChangeCallback( 16365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool enabled = false; 16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) args->GetBoolean(0, &enabled); 16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::accessibility::EnableVirtualKeyboard(enabled); 16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void BrowserOptionsHandler::PerformFactoryResetRestart( 16445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::ListValue* args) { 16455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) policy::BrowserPolicyConnectorChromeOS* connector = 16465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) g_browser_process->platform_part()->browser_policy_connector_chromeos(); 16475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (connector->IsEnterpriseManaged()) 16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = g_browser_process->local_state(); 16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetBoolean(prefs::kFactoryResetRequested, true); 16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->CommitPendingWrite(); 16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Perform sign out. Current chrome process will then terminate, new one will 16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // be launched (as if it was a restart). 16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart(); 16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupAccessibilityFeatures() { 16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = g_browser_process->local_state(); 16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue virtual_keyboard_enabled( 1662f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) pref_service->GetBoolean(prefs::kAccessibilityVirtualKeyboardEnabled)); 16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setVirtualKeyboardCheckboxState", 16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual_keyboard_enabled); 16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupMetricsReportingSettingVisibility() { 16705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't show the reporting setting if we are in the guest mode. 16725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (Profile::FromWebUI(web_ui())->IsGuestSession()) { 16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue visible(false); 16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setMetricsReportingSettingVisibility", visible); 16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)void BrowserOptionsHandler::SetupNetworkPredictionControl() { 16816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 16826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 16836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) base::DictionaryValue dict; 16846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict.SetInteger("value", 16856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) pref_service->GetInteger(prefs::kNetworkPredictionOptions)); 16866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict.SetBoolean("disabled", 16876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) !pref_service->IsUserModifiablePreference( 16886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) prefs::kNetworkPredictionOptions)); 16896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 16906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setNetworkPredictionValue", 16916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) dict); 16926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 16936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupFontSizeSelector() { 169590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 169690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PrefService::Preference* default_font_size = 169790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->FindPreference(prefs::kWebKitDefaultFontSize); 169890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const PrefService::Preference* default_fixed_font_size = 169990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->FindPreference(prefs::kWebKitDefaultFixedFontSize); 170090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 17015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::DictionaryValue dict; 170290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetInteger("value", 170390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pref_service->GetInteger(prefs::kWebKitDefaultFontSize)); 170490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 170590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // The font size control displays the value of the default font size, but 170690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // setting it alters both the default font size and the default fixed font 170790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // size. So it must be disabled when either of those prefs is not user 170890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // modifiable. 170990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetBoolean("disabled", 171090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) !default_font_size->IsUserModifiable() || 171190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) !default_fixed_font_size->IsUserModifiable()); 171290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 171390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // This is a poor man's version of CoreOptionsHandler::CreateValueForPref, 171490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // adapted to consider two prefs. It may be better to refactor 171590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // CreateValueForPref so it can be called from here. 171690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (default_font_size->IsManaged() || default_fixed_font_size->IsManaged()) { 171790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetString("controlledBy", "policy"); 171890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } else if (default_font_size->IsExtensionControlled() || 171990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) default_fixed_font_size->IsExtensionControlled()) { 172090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) dict.SetString("controlledBy", "extension"); 172190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 172290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 172390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setFontSize", dict); 17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupPageZoomSelector() { 17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double default_zoom_level = pref_service->GetDouble(prefs::kDefaultZoomLevel); 17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double default_zoom_factor = 173058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch content::ZoomLevelToZoomFactor(default_zoom_level); 17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Generate a vector of zoom factors from an array of known presets along with 17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the default factor added if necessary. 17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<double> zoom_factors = 17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome_page_zoom::PresetZoomFactors(default_zoom_factor); 17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Iterate through the zoom factors and and build the contents of the 17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // selector that will be sent to the javascript handler. 17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Each item in the list has the following parameters: 17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1. Title (string). 17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 2. Value (double). 17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 3. Is selected? (bool). 17435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue zoom_factors_value; 17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (std::vector<double>::const_iterator i = zoom_factors.begin(); 17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i != zoom_factors.end(); ++i) { 17465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ListValue* option = new base::ListValue(); 17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double factor = *i; 17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int percent = static_cast<int>(factor * 100 + 0.5); 17492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::StringValue( 17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringFUTF16Int(IDS_ZOOM_PERCENT, percent))); 17512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::FundamentalValue(factor)); 17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool selected = content::ZoomValuesEqual(factor, default_zoom_factor); 17532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::FundamentalValue(selected)); 17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) zoom_factors_value.Append(option); 17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setupPageZoomSelector", zoom_factors_value); 17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupAutoOpenFileTypes() { 17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the hidden state for the AutoOpenFileTypesResetToDefault button. 17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We show the button if the user has any auto-open file types registered. 17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadManager* manager = BrowserContext::GetDownloadManager( 17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext()); 17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool display = manager && 17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DownloadPrefs::FromDownloadManager(manager)->IsAutoOpenUsed(); 17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue value(display); 17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BrowserOptions.setAutoOpenFileTypesDisplayed", value); 17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void BrowserOptionsHandler::SetupProxySettingsSection() { 17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 17754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Disable the button if proxy settings are managed by a sysadmin, overridden 17764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // by an extension, or the browser is running in Windows Ash (on Windows the 17774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // proxy settings dialog will open on the Windows desktop and be invisible 17784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // to a user in Ash). 17794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool is_win_ash = false; 17804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 1781f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) chrome::HostDesktopType desktop_type = helper::GetDesktopType(web_ui()); 1782f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) is_win_ash = (desktop_type == chrome::HOST_DESKTOP_TYPE_ASH); 17834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PrefService::Preference* proxy_config = 17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->FindPreference(prefs::kProxy); 17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool is_extension_controlled = (proxy_config && 17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) proxy_config->IsExtensionControlled()); 17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::FundamentalValue disabled(is_win_ash || (proxy_config && 17914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) !proxy_config->IsUserModifiable())); 17922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FundamentalValue extension_controlled(is_extension_controlled); 179346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.setupProxySettingsButton", 17942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disabled, extension_controlled); 17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 179646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_WIN) 179746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SetupExtensionControlledIndicators(); 179846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif // defined(OS_WIN) 179946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // !defined(OS_CHROMEOS) 18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1803f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void BrowserOptionsHandler::SetupManageCertificatesSection() { 1804f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(OS_WIN) 1805f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Disable the button if the settings page is displayed in Windows Ash, 1806f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // otherwise the proxy settings dialog will open on the Windows desktop and 1807f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // be invisible to a user in Ash. 1808f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (helper::GetDesktopType(web_ui()) == chrome::HOST_DESKTOP_TYPE_ASH) { 1809f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) base::FundamentalValue enabled(false); 1810f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.enableCertificateButton", 1811f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) enabled); 1812f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 1813f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // defined(OS_WIN) 1814f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 1815f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)void BrowserOptionsHandler::SetupManagingSupervisedUsers() { 18170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) bool has_users = !Profile::FromWebUI(web_ui())-> 1818f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GetPrefs()->GetDictionary(prefs::kSupervisedUsers)->empty(); 18190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) base::FundamentalValue has_users_value(has_users); 18200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) web_ui()->CallJavascriptFunction( 18210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) "BrowserOptions.updateManagesSupervisedUsers", 18220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) has_users_value); 18230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 18240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 182523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)void BrowserOptionsHandler::SetupEasyUnlock() { 18266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // TODO(xiyuan): Update when pairing data is really availble. 18276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const base::ListValue* devices = 18286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EasyUnlockService::Get(Profile::FromWebUI(web_ui()))->GetRemoteDevices(); 18296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool has_pairing = devices && !devices->empty(); 183023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::FundamentalValue has_pairing_value(has_pairing); 183123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) web_ui()->CallJavascriptFunction( 183223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) "BrowserOptions.updateEasyUnlock", 183323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) has_pairing_value); 183423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 183523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1836010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void BrowserOptionsHandler::SetupExtensionControlledIndicators() { 1837c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_WIN) 1838010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) base::DictionaryValue extension_controlled; 1839010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1840010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Search Engine. 184146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const extensions::Extension* extension = 184246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extensions::GetExtensionOverridingSearchEngine( 1843f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1844010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("searchEngine", extension, &extension_controlled); 1845c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1846010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Home page. 184746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingHomepage( 1848f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1849010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("homePage", extension, &extension_controlled); 1850c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 1851010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the Startup pages. 185246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingStartupPages( 1853f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Profile::FromWebUI(web_ui())); 1854010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("startUpPage", extension, &extension_controlled); 1855010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1856010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Check if an extension is overriding the NTP page. 1857010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) GURL ntp_url(chrome::kChromeUINewTabURL); 1858010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool ignored_param; 1859010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension = NULL; 1860010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserURLHandler::GetInstance()->RewriteURLIfNecessary( 1861010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &ntp_url, 1862010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->GetWebContents()->GetBrowserContext(), 1863010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) &ignored_param); 1864010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) if (ntp_url.SchemeIs("chrome-extension")) { 1865010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) using extensions::ExtensionRegistry; 1866010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry* registry = ExtensionRegistry::Get( 1867010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Profile::FromWebUI(web_ui())); 1868010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension = registry->GetExtensionById(ntp_url.host(), 1869010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ExtensionRegistry::ENABLED); 1870010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 1871010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AppendExtensionData("newTabPage", extension, &extension_controlled); 1872010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 187346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Check if an extension is overwriting the proxy setting. 187446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) extension = extensions::GetExtensionOverridingProxy( 187546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) Profile::FromWebUI(web_ui())); 187646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) AppendExtensionData("proxy", extension, &extension_controlled); 187746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1878010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) web_ui()->CallJavascriptFunction("BrowserOptions.toggleExtensionIndicators", 1879010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension_controlled); 1880c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // defined(OS_WIN) 1881010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 1882c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 1884