diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 05:05:37 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-12 05:05:37 +0000 |
commit | 2031cf9d2ebb778b9a2f76aa089a3c96ae91db72 (patch) | |
tree | b1f7a90f01c76af8e8502f189925957d89734fe8 /chrome | |
parent | c976938f96f5f9296d25cbc41d8fcea5bce74627 (diff) | |
download | chromium_src-2031cf9d2ebb778b9a2f76aa089a3c96ae91db72.zip chromium_src-2031cf9d2ebb778b9a2f76aa089a3c96ae91db72.tar.gz chromium_src-2031cf9d2ebb778b9a2f76aa089a3c96ae91db72.tar.bz2 |
Moves instant out of labs and into prefs.
BUG=58772
TEST=make sure that there is an entry in prefs for instant. See that
it works.
Review URL: http://codereview.chromium.org/3726002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@62250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/browser.cc | 22 | ||||
-rw-r--r-- | chrome/browser/browser.h | 6 | ||||
-rw-r--r-- | chrome/browser/instant/instant_controller.cc | 6 | ||||
-rw-r--r-- | chrome/browser/instant/instant_controller.h | 3 | ||||
-rw-r--r-- | chrome/browser/labs.cc | 7 | ||||
-rw-r--r-- | chrome/browser/renderer_host/browser_render_process_host.cc | 3 | ||||
-rw-r--r-- | chrome/browser/views/options/general_page_view.cc | 65 | ||||
-rw-r--r-- | chrome/browser/views/options/general_page_view.h | 11 | ||||
-rw-r--r-- | chrome/browser/views/options/options_group_view.cc | 3 | ||||
-rw-r--r-- | chrome/browser/views/options/options_group_view.h | 2 | ||||
-rw-r--r-- | chrome/renderer/search_extension.cc | 6 |
11 files changed, 108 insertions, 26 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 3fcd4d3..24b24b1 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -235,6 +235,7 @@ Browser::Browser(Type type, Profile* profile) encoding_auto_detect_.Init(prefs::kWebKitUsesUniversalDetector, profile_->GetPrefs(), NULL); use_vertical_tabs_.Init(prefs::kUseVerticalTabs, profile_->GetPrefs(), this); + instant_enabled_.Init(prefs::kInstantEnabled, profile_->GetPrefs(), this); if (!TabMenuModel::AreVerticalTabsEnabled()) { // If vertical tabs aren't enabled, explicitly turn them off. Otherwise we // might show vertical tabs but not show an option to turn them off. @@ -251,10 +252,7 @@ Browser::Browser(Type type, Profile* profile) if (profile_->GetProfileSyncService()) profile_->GetProfileSyncService()->AddObserver(this); - if (type == TYPE_NORMAL && InstantController::IsEnabled() && - !profile->IsOffTheRecord()) { - instant_.reset(new InstantController(this)); - } + CreateInstantIfNecessary(); PrefService *local_state = g_browser_process->local_state(); if (local_state) { @@ -3276,6 +3274,15 @@ void Browser::Observe(NotificationType type, } else if (pref_name == prefs::kPrintingEnabled) { command_updater_.UpdateCommandEnabled(IDC_PRINT, printing_enabled_.GetValue()); + } else if (pref_name == prefs::kInstantEnabled) { + if (!InstantController::IsEnabled(profile())) { + if (instant()) { + instant()->DestroyPreviewContents(); + instant_.reset(NULL); + } + } else { + CreateInstantIfNecessary(); + } } else { NOTREACHED(); } @@ -4178,3 +4185,10 @@ bool Browser::OpenInstant(WindowOpenDisposition disposition) { NOTREACHED(); return false; } + +void Browser::CreateInstantIfNecessary() { + if (type() == TYPE_NORMAL && InstantController::IsEnabled(profile()) && + !profile()->IsOffTheRecord()) { + instant_.reset(new InstantController(this)); + } +} diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h index a6e2f22..d491f68 100644 --- a/chrome/browser/browser.h +++ b/chrome/browser/browser.h @@ -975,6 +975,9 @@ class Browser : public TabHandlerDelegate, // for use from OpenCurrentURL. bool OpenInstant(WindowOpenDisposition disposition); + // If this browser should have instant one is created, otherwise does nothing. + void CreateInstantIfNecessary(); + // Data members ///////////////////////////////////////////////////////////// NotificationRegistrar registrar_; @@ -1072,6 +1075,9 @@ class Browser : public TabHandlerDelegate, // Keep track of the printing enabled pref. BooleanPrefMember printing_enabled_; + // Keep track of when instant enabled changes. + BooleanPrefMember instant_enabled_; + // Indicates if command execution is blocked. bool block_command_execution_; diff --git a/chrome/browser/instant/instant_controller.cc b/chrome/browser/instant/instant_controller.cc index 3c30c44..ac0cbfd 100644 --- a/chrome/browser/instant/instant_controller.cc +++ b/chrome/browser/instant/instant_controller.cc @@ -28,8 +28,7 @@ void InstantController::RegisterUserPrefs(PrefService* prefs) { } // static -bool InstantController::IsEnabled() { - // TODO: convert to kInstantEnabled once pref lands. +bool InstantController::IsEnabled(Profile* profile) { static bool enabled = false; static bool checked = false; if (!checked) { @@ -37,7 +36,8 @@ bool InstantController::IsEnabled() { enabled = CommandLine::ForCurrentProcess()->HasSwitch( switches::kEnableMatchPreview); } - return enabled; + PrefService* prefs = profile->GetPrefs(); + return (enabled || (prefs && prefs->GetBoolean(prefs::kInstantEnabled))); } InstantController::InstantController(InstantDelegate* delegate) diff --git a/chrome/browser/instant/instant_controller.h b/chrome/browser/instant/instant_controller.h index 84a15a2..dd4631a 100644 --- a/chrome/browser/instant/instant_controller.h +++ b/chrome/browser/instant/instant_controller.h @@ -23,6 +23,7 @@ struct AutocompleteMatch; class InstantDelegate; class InstantLoaderManager; class PrefService; +class Profile; class TabContents; class TemplateURL; @@ -43,7 +44,7 @@ class InstantController : public InstantLoaderDelegate { static void RegisterUserPrefs(PrefService* prefs); // Is InstantController enabled? - static bool IsEnabled(); + static bool IsEnabled(Profile* profile); // Invoked as the user types in the omnibox with the url to navigate to. If // the url is empty and there is a preview TabContents it is destroyed. If url diff --git a/chrome/browser/labs.cc b/chrome/browser/labs.cc index 4e664ff..223a4d6 100644 --- a/chrome/browser/labs.cc +++ b/chrome/browser/labs.cc @@ -73,13 +73,6 @@ const Experiment kExperiments[] = { switches::kEnableTabbedOptions }, { - "match-preview", // Do not change; see above. - IDS_LABS_INSTANT_NAME, - IDS_LABS_INSTANT_DESCRIPTION, - kOsWin, - switches::kEnableMatchPreview - }, - { "remoting", // Do not change; see above. IDS_LABS_REMOTING_NAME, #if defined(OS_WIN) diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index 2e074b9..483d904 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -611,8 +611,7 @@ void BrowserRenderProcessHost::PropagateBrowserCommandLineToRenderer( switches::kEnableResourceContentSettings, switches::kPrelaunchGpuProcess, switches::kEnableAcceleratedDecoding, - switches::kEnableFileSystem, - switches::kEnableMatchPreview + switches::kEnableFileSystem }; renderer_cmd->CopySwitchesFrom(browser_cmd, kSwitchNames, arraysize(kSwitchNames)); diff --git a/chrome/browser/views/options/general_page_view.cc b/chrome/browser/views/options/general_page_view.cc index 9df25d0..b194f0f 100644 --- a/chrome/browser/views/options/general_page_view.cc +++ b/chrome/browser/views/options/general_page_view.cc @@ -11,8 +11,11 @@ #include "base/string16.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" +#include "chrome/browser/browser.h" +#include "chrome/browser/browser_window.h" #include "chrome/browser/custom_home_pages_table_model.h" #include "chrome/browser/dom_ui/new_tab_ui.h" +#include "chrome/browser/instant/instant_confirm_dialog.h" #include "chrome/browser/net/url_fixer_upper.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profile.h" @@ -208,6 +211,8 @@ GeneralPageView::GeneralPageView(Profile* profile) homepage_show_home_button_checkbox_(NULL), default_search_group_(NULL), default_search_manage_engines_button_(NULL), + instant_checkbox_(NULL), + instant_link_(NULL), default_browser_group_(NULL), default_browser_status_label_(NULL), default_browser_use_as_default_button_(NULL), @@ -281,6 +286,16 @@ void GeneralPageView::ButtonPressed( UserMetricsRecordAction(UserMetricsAction("Options_ManageSearchEngines"), NULL); KeywordEditorView::Show(profile()); + } else if (sender == instant_checkbox_) { + if (instant_checkbox_->checked()) { + // Don't toggle immediately, instead let + // ShowInstantConfirmDialogIfNecessary do it. + instant_checkbox_->SetChecked(false); + browser::ShowInstantConfirmDialogIfNecessary( + GetWindow()->GetNativeWindow(), profile()); + } else { + profile()->GetPrefs()->SetBoolean(prefs::kInstantEnabled, false); + } } } @@ -357,6 +372,7 @@ void GeneralPageView::InitControlLayout() { registrar_.Init(profile()->GetPrefs()); registrar_.Add(prefs::kRestoreOnStartup, this); registrar_.Add(prefs::kURLsToRestoreOnStartup, this); + registrar_.Add(prefs::kInstantEnabled, this); new_tab_page_is_home_page_.Init(prefs::kHomePageIsNewTabPage, profile()->GetPrefs(), this); @@ -365,10 +381,10 @@ void GeneralPageView::InitControlLayout() { } void GeneralPageView::NotifyPrefChanged(const std::string* pref_name) { + PrefService* prefs = profile()->GetPrefs(); if (!pref_name || *pref_name == prefs::kRestoreOnStartup || *pref_name == prefs::kURLsToRestoreOnStartup) { - PrefService* prefs = profile()->GetPrefs(); const SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref(prefs); bool radio_buttons_enabled = !SessionStartupPref::TypeIsManaged(prefs); @@ -423,6 +439,9 @@ void GeneralPageView::NotifyPrefChanged(const std::string* pref_name) { homepage_show_home_button_checkbox_->SetEnabled( !show_home_button_.IsManaged()); } + + if (!pref_name || *pref_name == prefs::kInstantEnabled) + instant_checkbox_->SetChecked(prefs->GetBoolean(prefs::kInstantEnabled)); } void GeneralPageView::HighlightGroup(OptionsGroup highlight_group) { @@ -430,6 +449,16 @@ void GeneralPageView::HighlightGroup(OptionsGroup highlight_group) { default_search_group_->SetHighlighted(true); } +void GeneralPageView::LinkActivated(views::Link* source, int event_flags) { + DCHECK(source == instant_link_); + // We open a new browser window so the Options dialog doesn't get lost behind + // other windows. + Browser* browser = Browser::Create(profile()); + browser->OpenURL(GURL(browser::kInstantLearnMoreURL), + GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); + browser->window()->Show(); +} + /////////////////////////////////////////////////////////////////////////////// // GeneralPageView, private: @@ -627,6 +656,15 @@ void GeneralPageView::InitDefaultSearchGroup() { this, l10n_util::GetString(IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES_LINK)); + instant_checkbox_ = new views::Checkbox( + l10n_util::GetString(IDS_INSTANT_PREF)); + instant_checkbox_->SetMultiLine(true); + instant_checkbox_->set_listener(this); + + instant_link_ = new views::Link(l10n_util::GetString(IDS_LEARN_MORE)); + instant_link_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); + instant_link_->SetController(this); + using views::GridLayout; using views::ColumnSet; @@ -642,9 +680,34 @@ void GeneralPageView::InitDefaultSearchGroup() { column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, GridLayout::USE_PREF, 0, 0); + const int single_column_view_set_id = 1; + column_set = layout->AddColumnSet(single_column_view_set_id); + column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, + GridLayout::USE_PREF, 0, 0); + + const int link_column_set_id = 2; + column_set = layout->AddColumnSet(link_column_set_id); + // TODO(sky): this isn't right, we need a method to determine real indent. + column_set->AddPaddingColumn(0, views::Checkbox::GetTextIndent() + 3); + column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, + GridLayout::USE_PREF, 0, 0); + column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); + column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0, + GridLayout::USE_PREF, 0, 0); + layout->StartRow(0, double_column_view_set_id); layout->AddView(default_search_engine_combobox_); layout->AddView(default_search_manage_engines_button_); + layout->AddPaddingRow(0, kUnrelatedControlVerticalSpacing); + + layout->StartRow(0, single_column_view_set_id); + layout->AddView(instant_checkbox_); + layout->AddPaddingRow(0, 0); + + layout->StartRow(0, link_column_set_id); + layout->AddView( + new views::Label(l10n_util::GetString(IDS_INSTANT_PREF_WARNING))); + layout->AddView(instant_link_); default_search_group_ = new OptionsGroupView( contents, l10n_util::GetString(IDS_OPTIONS_DEFAULTSEARCH_GROUP_NAME), diff --git a/chrome/browser/views/options/general_page_view.h b/chrome/browser/views/options/general_page_view.h index f2b126f..a663c82 100644 --- a/chrome/browser/views/options/general_page_view.h +++ b/chrome/browser/views/options/general_page_view.h @@ -13,6 +13,7 @@ #include "chrome/browser/views/url_picker.h" #include "views/controls/combobox/combobox.h" #include "views/controls/button/button.h" +#include "views/controls/link.h" #include "views/controls/table/table_view_observer.h" #include "views/view.h" @@ -39,7 +40,8 @@ class GeneralPageView : public OptionsPageView, public views::Textfield::Controller, public UrlPickerDelegate, public views::TableViewObserver, - public ShellIntegration::DefaultBrowserObserver { + public ShellIntegration::DefaultBrowserObserver, + public views::LinkController { public: explicit GeneralPageView(Profile* profile); virtual ~GeneralPageView(); @@ -64,6 +66,9 @@ class GeneralPageView : public OptionsPageView, virtual void NotifyPrefChanged(const std::string* pref_name); virtual void HighlightGroup(OptionsGroup highlight_group); + // LinkController implementation: + virtual void LinkActivated(views::Link* source, int event_flags); + private: // ShellIntegration::DefaultBrowserObserver implementation: // Updates the UI state to reflect the current default browser state. @@ -143,11 +148,13 @@ class GeneralPageView : public OptionsPageView, StringPrefMember homepage_; BooleanPrefMember show_home_button_; - // Controls for the Default Search group + // Controls for the Search group OptionsGroupView* default_search_group_; views::Combobox* default_search_engine_combobox_; views::NativeButton* default_search_manage_engines_button_; scoped_ptr<SearchEngineListModel> default_search_engines_model_; + views::Checkbox* instant_checkbox_; + views::Link* instant_link_; // Controls for the Default Browser group OptionsGroupView* default_browser_group_; diff --git a/chrome/browser/views/options/options_group_view.cc b/chrome/browser/views/options/options_group_view.cc index 14131b7..ef3e5dd 100644 --- a/chrome/browser/views/options/options_group_view.cc +++ b/chrome/browser/views/options/options_group_view.cc @@ -53,6 +53,9 @@ OptionsGroupView::OptionsGroupView(views::View* contents, contents->SetAccessibleName(title); } +OptionsGroupView::~OptionsGroupView() { +} + void OptionsGroupView::SetHighlighted(bool highlighted) { highlighted_ = highlighted; SchedulePaint(); diff --git a/chrome/browser/views/options/options_group_view.h b/chrome/browser/views/options/options_group_view.h index 69b4efa..b79a36e 100644 --- a/chrome/browser/views/options/options_group_view.h +++ b/chrome/browser/views/options/options_group_view.h @@ -25,7 +25,7 @@ class OptionsGroupView : public views::View { const std::wstring& title, const std::wstring& description, bool show_separator); - virtual ~OptionsGroupView() {} + virtual ~OptionsGroupView(); // Sets the group as being highlighted to attract attention. void SetHighlighted(bool highlighted); diff --git a/chrome/renderer/search_extension.cc b/chrome/renderer/search_extension.cc index 859ed8c..dd38508 100644 --- a/chrome/renderer/search_extension.cc +++ b/chrome/renderer/search_extension.cc @@ -86,11 +86,7 @@ v8::Handle<v8::Value> SearchExtensionWrapper::SetSuggestResult( } v8::Extension* SearchExtension::Get() { - if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableMatchPreview)) { - return new SearchExtensionWrapper(); - } - return NULL; + return new SearchExtensionWrapper(); } } // namespace extensions_v8 |