summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 05:05:37 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-12 05:05:37 +0000
commit2031cf9d2ebb778b9a2f76aa089a3c96ae91db72 (patch)
treeb1f7a90f01c76af8e8502f189925957d89734fe8 /chrome
parentc976938f96f5f9296d25cbc41d8fcea5bce74627 (diff)
downloadchromium_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.cc22
-rw-r--r--chrome/browser/browser.h6
-rw-r--r--chrome/browser/instant/instant_controller.cc6
-rw-r--r--chrome/browser/instant/instant_controller.h3
-rw-r--r--chrome/browser/labs.cc7
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.cc3
-rw-r--r--chrome/browser/views/options/general_page_view.cc65
-rw-r--r--chrome/browser/views/options/general_page_view.h11
-rw-r--r--chrome/browser/views/options/options_group_view.cc3
-rw-r--r--chrome/browser/views/options/options_group_view.h2
-rw-r--r--chrome/renderer/search_extension.cc6
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