diff options
Diffstat (limited to 'chrome/browser/resources')
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 + }; +}); |