summaryrefslogtreecommitdiffstats
path: root/chrome/browser/resources
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/resources')
-rw-r--r--chrome/browser/resources/options2/browser_options.html18
-rw-r--r--chrome/browser/resources/options2/browser_options.js55
-rw-r--r--chrome/browser/resources/options2/browser_options_page.css38
-rw-r--r--chrome/browser/resources/options2/options.html2
-rw-r--r--chrome/browser/resources/options2/options.js3
-rw-r--r--chrome/browser/resources/options2/options_bundle.js3
-rw-r--r--chrome/browser/resources/options2/options_page.css2
-rw-r--r--chrome/browser/resources/options2/startup_overlay.css42
-rw-r--r--chrome/browser/resources/options2/startup_overlay.html12
-rw-r--r--chrome/browser/resources/options2/startup_overlay.js143
10 files changed, 219 insertions, 99 deletions
diff --git a/chrome/browser/resources/options2/browser_options.html b/chrome/browser/resources/options2/browser_options.html
index 6f8731b..0e47002 100644
--- a/chrome/browser/resources/options2/browser_options.html
+++ b/chrome/browser/resources/options2/browser_options.html
@@ -47,20 +47,14 @@
<input id="startupShowPagesButton" type="radio" name="startup"
pref="session.restore_on_startup"
value="4" metric="Options_Startup_Custom">
- <span id="startupShowPagesLabel"
- i18n-content="startupShowPages"></span>
+ <span>
+ <span id="startupShowPagesLabel"
+ i18n-content="startupShowPages"></span>
+ <button id="startupSetPages" class="link-button"
+ i18n-content="startupSetPages"></button>
+ </span>
</label>
</div>
- <div class="suboption">
- <div id="startupPageManagement" class="settings-list">
- <list id="startupPagesList"></list>
- <div>
- <button id="startupUseCurrentButton"
- i18n-content="startupUseCurrent"></button>
- </div>
- </div>
- <div id="startupPagesListDropmarker"></div>
- </div>
</div>
</section>
<section>
diff --git a/chrome/browser/resources/options2/browser_options.js b/chrome/browser/resources/options2/browser_options.js
index 2491566..dab7645 100644
--- a/chrome/browser/resources/options2/browser_options.js
+++ b/chrome/browser/resources/options2/browser_options.js
@@ -26,13 +26,9 @@ cr.define('options', function() {
syncEnabled: false,
syncSetupCompleted: false,
- startup_pages_pref_: {
- 'name': 'session.urls_to_restore_on_startup',
- 'disabled': false
- },
-
/**
- * At autocomplete list that can be attached to a text field during editing.
+ * An autocomplete list that can be attached to the homepage URL text field
+ * during editing.
* @type {HTMLElement}
* @private
*/
@@ -63,8 +59,8 @@ cr.define('options', function() {
};
// Wire up controls.
- $('startupUseCurrentButton').onclick = function(event) {
- chrome.send('setStartupPagesToCurrentPages');
+ $('startupSetPages').onclick = function() {
+ OptionsPage.navigateToPage('startup');
};
$('defaultSearchManageEnginesButton').onclick = function(event) {
OptionsPage.navigateToPage('searchEngines');
@@ -121,23 +117,10 @@ cr.define('options', function() {
};
}
- var startupPagesList = $('startupPagesList');
- options.browser_options.StartupPageList.decorate(startupPagesList);
- startupPagesList.autoExpands = true;
-
// Check if we are in the guest mode.
if (cr.commandLine && cr.commandLine.options['--bwsi']) {
// Hide the startup section.
$('startupSection').hidden = true;
- } else {
- // Initialize control enabled states.
- Preferences.getInstance().addEventListener('session.restore_on_startup',
- this.updateCustomStartupPageControlStates_.bind(this));
- Preferences.getInstance().addEventListener(
- this.startup_pages_pref_.name,
- this.handleStartupPageListChange_.bind(this));
-
- this.updateCustomStartupPageControlStates_();
}
var suggestionList = new options.AutocompleteList();
@@ -146,7 +129,6 @@ cr.define('options', function() {
this.requestAutocompleteSuggestions_.bind(this);
$('main-content').appendChild(suggestionList);
this.autocompleteList_ = suggestionList;
- startupPagesList.autocompleteList = suggestionList;
},
setSyncEnabled_: function(enabled) {
@@ -327,20 +309,6 @@ cr.define('options', function() {
},
/**
- * Updates the startup pages list with the given entries.
- * @param {Array} pages List of startup pages.
- * @private
- */
- updateStartupPages_: function(pages) {
- var model = new ArrayDataModel(pages);
- // Add a "new page" row.
- model.push({
- 'modelIndex': '-1'
- });
- $('startupPagesList').dataModel = model;
- },
-
- /**
* Sets the enabled state of the custom startup page list controls
* based on the current startup radio button selection.
* @private
@@ -358,17 +326,6 @@ cr.define('options', function() {
},
/**
- * Handle change events of the preference
- * 'session.urls_to_restore_on_startup'.
- * @param {event} preference changed event.
- * @private
- */
- handleStartupPageListChange_: function(event) {
- this.startup_pages_pref_.disabled = event.value['disabled'];
- this.updateCustomStartupPageControlStates_();
- },
-
- /**
* Set the default search engine based on the popup selection.
*/
setDefaultSearchEngine_: function() {
@@ -396,6 +353,10 @@ cr.define('options', function() {
* @param {Array} pages List of autocomplete suggestions.
* @private
*/
+ // This function is duplicated between here and startup_overlay.js. There is
+ // also some autocomplete-related duplication in the C++ handler code,
+ // browser_options_handler2.cc and startup_pages_handler2.cc.
+ // TODO(tbreisacher): remove the duplication by refactoring
updateAutocompleteSuggestions_: function(suggestions) {
var list = this.autocompleteList_;
// If the trigger for this update was a value being selected from the
diff --git a/chrome/browser/resources/options2/browser_options_page.css b/chrome/browser/resources/options2/browser_options_page.css
index 21001ce..342854c 100644
--- a/chrome/browser/resources/options2/browser_options_page.css
+++ b/chrome/browser/resources/options2/browser_options_page.css
@@ -1,41 +1,3 @@
-#startupPageManagement.settings-list > :last-child {
- border-top: 1px solid #d9d9d9;
- padding: 5px 10px;
-}
-
-#startupPagesList {
- min-height: 64px;
-}
-
-#startupPagesList .title {
- width: 40%;
-}
-
-#startupPagesList .url {
- -webkit-box-flex: 1;
- color: #666;
-}
-
-#startupPagesList > * {
- max-width: 700px;
-}
-
-#startupPagesListDropmarker {
- background-clip: padding-box;
- background-color: hsl(214, 91%, 65%);
- border-bottom-color: transparent;
- border-radius: 0;
- border-top-color: transparent;
- border: 2px solid hsl(214, 91%, 65%);
- box-sizing: border-box;
- display: none;
- height: 6px;
- overflow: hidden;
- pointer-events: none;
- position: fixed;
- z-index: 10;
-}
-
#defaultSearchEngineGroup {
display: -webkit-box;
-webkit-box-orient: vertical;
diff --git a/chrome/browser/resources/options2/options.html b/chrome/browser/resources/options2/options.html
index 77c1f07..ea4ec8c 100644
--- a/chrome/browser/resources/options2/options.html
+++ b/chrome/browser/resources/options2/options.html
@@ -38,6 +38,7 @@
<link rel="stylesheet" href="search_engine_manager.css">
<link rel="stylesheet" href="search_page.css">
<link rel="stylesheet" href="subpages_tab_controls.css">
+<link rel="stylesheet" href="startup_overlay.css">
<link rel="stylesheet" href="../sync_setup_overlay.css">
<if expr="pp_ifdef('chromeos')">
<link rel="stylesheet" href="about_page.css">
@@ -87,6 +88,7 @@
<include src="instant_confirm_overlay.html">
<include src="language_add_language_overlay.html">
<include src="manage_profile_overlay.html">
+ <include src="startup_overlay.html">
<include src="../sync_setup_overlay.html">
<if expr="pp_ifdef('chromeos')">
<include src="chromeos/bluetooth_add_device_overlay.html">
diff --git a/chrome/browser/resources/options2/options.js b/chrome/browser/resources/options2/options.js
index 8467aa2..a96eb9f 100644
--- a/chrome/browser/resources/options2/options.js
+++ b/chrome/browser/resources/options2/options.js
@@ -28,6 +28,7 @@ var ManageProfileOverlay = options.ManageProfileOverlay;
var ProxyOptions = options.ProxyOptions;
var SearchEngineManager = options.SearchEngineManager;
var SearchPage = options.SearchPage;
+var StartupOverlay = options.StartupOverlay;
var SyncSetupOverlay = options.SyncSetupOverlay;
var VirtualKeyboardManager = options.VirtualKeyboardManager;
@@ -172,6 +173,8 @@ function load() {
BrowserOptions.getInstance());
OptionsPage.registerOverlay(ManageProfileOverlay.getInstance(),
PersonalOptions.getInstance());
+ OptionsPage.registerOverlay(StartupOverlay.getInstance(),
+ BrowserOptions.getInstance());
if (cr.isChromeOS) {
OptionsPage.register(AccountsOptions.getInstance());
diff --git a/chrome/browser/resources/options2/options_bundle.js b/chrome/browser/resources/options2/options_bundle.js
index fc600e7..6f1d13e 100644
--- a/chrome/browser/resources/options2/options_bundle.js
+++ b/chrome/browser/resources/options2/options_bundle.js
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
@@ -91,5 +91,6 @@
<include src="search_engine_manager.js"></include>
<include src="search_engine_manager_engine_list.js"></include>
<include src="search_page.js"></include>
+<include src="startup_overlay.js"></include>
<include src="../sync_setup_overlay.js"></include>
<include src="options.js"></include>
diff --git a/chrome/browser/resources/options2/options_page.css b/chrome/browser/resources/options2/options_page.css
index dc706b2..6e306f4 100644
--- a/chrome/browser/resources/options2/options_page.css
+++ b/chrome/browser/resources/options2/options_page.css
@@ -593,7 +593,7 @@ html[os=mac] list[hasElementFocus] {
color: grey;
}
-#main-content list.autocomplete-suggestions {
+list.autocomplete-suggestions {
background-color: white;
border: 1px solid #aaa;
border-radius: 2px;
diff --git a/chrome/browser/resources/options2/startup_overlay.css b/chrome/browser/resources/options2/startup_overlay.css
new file mode 100644
index 0000000..0efb922
--- /dev/null
+++ b/chrome/browser/resources/options2/startup_overlay.css
@@ -0,0 +1,42 @@
+#startup-overlay {
+ min-width: 600px;
+}
+
+#startupPageManagement.settings-list > :last-child {
+ border-top: 1px solid #d9d9d9;
+ padding: 5px 10px;
+}
+
+#startupPagesList {
+ min-height: 64px;
+ min-width: 600px;
+}
+
+#startupPagesList .title {
+ width: 40%;
+}
+
+#startupPagesList .url {
+ -webkit-box-flex: 1;
+ color: #666;
+}
+
+#startupPagesList > * {
+ max-width: 700px;
+}
+
+#startupPagesListDropmarker {
+ background-clip: padding-box;
+ background-color: hsl(214, 91%, 65%);
+ border-bottom-color: transparent;
+ border-radius: 0;
+ border-top-color: transparent;
+ border: 2px solid hsl(214, 91%, 65%);
+ box-sizing: border-box;
+ display: none;
+ height: 6px;
+ overflow: hidden;
+ pointer-events: none;
+ position: fixed;
+ z-index: 10;
+}
diff --git a/chrome/browser/resources/options2/startup_overlay.html b/chrome/browser/resources/options2/startup_overlay.html
new file mode 100644
index 0000000..e87efa5
--- /dev/null
+++ b/chrome/browser/resources/options2/startup_overlay.html
@@ -0,0 +1,12 @@
+<div id="startup-overlay" class="page" hidden>
+ <div id="startupPageManagement" class="settings-list">
+ <h1 i18n-content="startupPagesDialogTitle"></h1>
+ <list id="startupPagesList"></list>
+ <div>
+ <button id="startupUseCurrentButton"
+ i18n-content="startupUseCurrent"></button>
+ <button id="startup-overlay-ok" i18n-content="ok"></button>
+ </div>
+ </div>
+ <div id="startupPagesListDropmarker"></div>
+</div>
diff --git a/chrome/browser/resources/options2/startup_overlay.js b/chrome/browser/resources/options2/startup_overlay.js
new file mode 100644
index 0000000..78d7b76
--- /dev/null
+++ b/chrome/browser/resources/options2/startup_overlay.js
@@ -0,0 +1,143 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('options', function() {
+ var OptionsPage = options.OptionsPage;
+ var ArrayDataModel = cr.ui.ArrayDataModel;
+
+ const localStrings = new LocalStrings();
+
+ /**
+ * StartupOverlay class
+ * Encapsulated handling of the 'Set Startup pages' overlay page.
+ * @constructor
+ * @class
+ */
+ function StartupOverlay() {
+ OptionsPage.call(this, 'startup',
+ templateData.startupOverlayTabTitle,
+ 'startup-overlay');
+ };
+
+ cr.addSingletonGetter(StartupOverlay);
+
+ StartupOverlay.prototype = {
+ // Inherit from OptionsPage.
+ __proto__: OptionsPage.prototype,
+
+ startup_pages_pref_: {
+ 'name': 'session.urls_to_restore_on_startup',
+ 'disabled': false
+ },
+
+ /**
+ * An autocomplete list that can be attached to a text field during editing.
+ * @type {HTMLElement}
+ * @private
+ */
+ autocompleteList_ : null,
+
+ /**
+ * Initialize the page.
+ */
+ initializePage: function() {
+ // Call base class implementation to start preference initialization.
+ OptionsPage.prototype.initializePage.call(this);
+
+ var self = this;
+
+ var startupPagesList = $('startupPagesList');
+ options.browser_options.StartupPageList.decorate(startupPagesList);
+ startupPagesList.autoExpands = true;
+
+ $('startupUseCurrentButton').onclick = function(event) {
+ chrome.send('setStartupPagesToCurrentPages');
+ };
+
+ $('startup-overlay-ok').onclick = function() {
+ OptionsPage.closeOverlay();
+ }
+
+ // Initialize control enabled states.
+ Preferences.getInstance().addEventListener(
+ this.startup_pages_pref_.name,
+ this.handleStartupPageListChange_.bind(this));
+
+ var suggestionList = new options.AutocompleteList();
+ suggestionList.autoExpands = true;
+ suggestionList.suggestionUpdateRequestCallback =
+ this.requestAutocompleteSuggestions_.bind(this);
+ $('startup-overlay').appendChild(suggestionList);
+ this.autocompleteList_ = suggestionList;
+ startupPagesList.autocompleteList = suggestionList;
+ },
+
+ /**
+ * Updates the startup pages list with the given entries.
+ * @param {Array} pages List of startup pages.
+ * @private
+ */
+ updateStartupPages_: function(pages) {
+ var model = new ArrayDataModel(pages);
+ // Add a "new page" row.
+ model.push({
+ 'modelIndex': '-1'
+ });
+ $('startupPagesList').dataModel = model;
+ },
+
+ /**
+ * Sends an asynchronous request for new autocompletion suggestions for the
+ * the given query. When new suggestions are available, the C++ handler will
+ * call updateAutocompleteSuggestions_.
+ * @param {string} query List of autocomplete suggestions.
+ * @private
+ */
+ requestAutocompleteSuggestions_: function(query) {
+ chrome.send('requestAutocompleteSuggestionsForStartupPages', [query]);
+ },
+
+ /**
+ * Updates the autocomplete suggestion list with the given entries.
+ * @param {Array} pages List of autocomplete suggestions.
+ * @private
+ */
+ updateAutocompleteSuggestions_: function(suggestions) {
+ var list = this.autocompleteList_;
+ // If the trigger for this update was a value being selected from the
+ // current list, do nothing.
+ if (list.targetInput && list.selectedItem &&
+ list.selectedItem['url'] == list.targetInput.value) {
+ console.log('value selected from current list')
+ return;
+ }
+ list.suggestions = suggestions;
+ },
+
+ /**
+ * Handle change events of the preference
+ * 'session.urls_to_restore_on_startup'.
+ * @param {event} preference changed event.
+ * @private
+ */
+ handleStartupPageListChange_: function(event) {
+ this.startup_pages_pref_.disabled = event.value['disabled'];
+ },
+ };
+
+ // Forward public APIs to private implementations.
+ [
+ 'updateStartupPages',
+ 'updateAutocompleteSuggestions',
+ ].forEach(function(name) {
+ StartupOverlay[name] = function(value) {
+ StartupOverlay.getInstance()[name + '_'](value);
+ };
+ });
+
+ // Export
+ return {
+ StartupOverlay: StartupOverlay
+ };
+});