diff options
-rw-r--r-- | chrome/app/generated_resources.grd | 41 | ||||
-rw-r--r-- | chrome/app/theme/theme_resources.grd | 1 | ||||
-rw-r--r-- | chrome/browser/app_controller_mac.mm | 9 | ||||
-rw-r--r-- | chrome/browser/browser_about_handler.cc | 24 | ||||
-rw-r--r-- | chrome/browser/browser_main.cc | 4 | ||||
-rw-r--r-- | chrome/browser/browser_resources.grd | 1 | ||||
-rw-r--r-- | chrome/browser/dom_ui/dom_ui_factory.cc | 7 | ||||
-rw-r--r-- | chrome/browser/dom_ui/labs_ui.cc | 196 | ||||
-rw-r--r-- | chrome/browser/dom_ui/labs_ui.h | 25 | ||||
-rw-r--r-- | chrome/browser/dom_ui/plugins_ui.cc | 22 | ||||
-rw-r--r-- | chrome/browser/labs.cc | 231 | ||||
-rw-r--r-- | chrome/browser/labs.h | 37 | ||||
-rw-r--r-- | chrome/browser/prefs/browser_prefs.cc | 6 | ||||
-rw-r--r-- | chrome/browser/resources/labs.html | 311 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 4 | ||||
-rw-r--r-- | chrome/common/pref_names.cc | 3 | ||||
-rw-r--r-- | chrome/common/pref_names.h | 1 | ||||
-rw-r--r-- | chrome/common/url_constants.cc | 12 | ||||
-rw-r--r-- | chrome/common/url_constants.h | 20 |
19 files changed, 40 insertions, 915 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 6b37b00..27a5f4f 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -3778,47 +3778,6 @@ Keep your key file in a safe place. You will need it to create new versions of y Priority: </message> - <!-- Labs --> - <message name="IDS_LABS_TITLE" desc="Title for the chrome://labs page. Should be translated like 'Labs' is at googlelabs.com."> - Labs - </message> - <message name="IDS_LABS_LONG_TITLE" desc="Long version of the title for the chrome://labs page."> - Labs: Some crazy experimental stuff. - </message> - <message name="IDS_LABS_TABLE_TITLE" desc="Title for the experiments table on the chrome://labs page."> - Labs Experiments - </message> - <message name="IDS_LABS_BLURB" desc="Text at the top of the about:labs page, warning users that the about:labs contents are volatile."> - <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph> Labs is a testing ground for experimental features that aren't quite ready for primetime. They may change, break or disappear at any time. - </message> - <message name="IDS_LABS_NO_EXPERIMENTS_AVAILABLE" desc="Shown if no labs experiments are available"> - Aww, it looks like there are currently no experiments available. - </message> - <message name="IDS_LABS_RESTART_NOTICE" desc="Notifies the user that he needs to restart chrome. Shown next to a button that says 'Restart Now'."> - Your changes will take effect the next time you restart <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>. - </message> - <message name="IDS_LABS_RESTART_BUTTON" desc="Text on a button that restarts chrome when clicked. "> - Restart Now - </message> - <message name="IDS_LABS_DISABLE" desc="The link for disabling a labs experiment."> - Disable - </message> - <message name="IDS_LABS_ENABLE" desc="The link for enabling a labs experiment."> - Enable - </message> - <message name="IDS_LABS_TABPOSE_NAME" desc="Name of the 'Tab Overview' lab."> - Tab Overview - </message> - <message name="IDS_LABS_TABPOSE_DESCRIPTION" desc="Description of the 'Tab Overview' lab."> - Swipe down with three fingers on your trackpad to see an overview of all your tabs. Click on a thumbnail to select it. Works great in fullscreen mode. - </message> - <message name="IDS_LABS_LEFTTABS_NAME" desc="Name of the 'Left Tabs' lab."> - Tabs on the left - </message> - <message name="IDS_LABS_LEFTTABS_DESCRIPTION" desc="Description of the 'Left Tabs' lab."> - Adds a "Use Side Tabs" entry to the tabstrip's context menu. Use this to toggle between tabs on top (default) and tabs on the left. Useful on widescreen monitors. - </message> - <!-- Click-to-load --> <message name="IDS_PLUGIN_LOAD" desc="The link for loading a blocked plug-in."> Run plug-in this time diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index 27ba62a7..19737f4 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd @@ -186,7 +186,6 @@ <include name="IDR_INFO_BUBBLE_CLOSE" file="bubble_close.png" type="BINDATA" /> <include name="IDR_INPUT_ALERT" file="input_alert.png" type="BINDATA" /> <include name="IDR_KEYWORD_SEARCH_MAGNIFIER" file="keyword_search_magnifier.png" type="BINDATA" /> - <include name="IDR_LABS" file="labs.png" type="BINDATA" /> <include name="IDR_LOCATIONBG_C" file="omnibox_c.png" type="BINDATA" /> <include name="IDR_LOCATIONBG_L" file="omnibox_l.png" type="BINDATA" /> <include name="IDR_LOCATIONBG_POPUPMODE_CENTER" file="omnibox_popup_c.png" type="BINDATA" /> diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm index eb4452c..c6cf443 100644 --- a/chrome/browser/app_controller_mac.mm +++ b/chrome/browser/app_controller_mac.mm @@ -220,6 +220,10 @@ void RecordLastRunAppBundlePath() { if (parsed_command_line.HasSwitch(switches::kActivateOnLaunch)) { [NSApp activateIgnoringOtherApps:YES]; } + + if (!parsed_command_line.HasSwitch(switches::kEnableExposeForTabs)) { + [tabposeMenuItem_ setHidden:YES]; + } } // (NSApplicationDelegate protocol) This is the Apple-approved place to override @@ -497,11 +501,6 @@ void RecordLastRunAppBundlePath() { [self openUrls:startupUrls_]; [self clearStartupUrls]; } - - const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); - if (!parsed_command_line.HasSwitch(switches::kEnableExposeForTabs)) { - [tabposeMenuItem_ setHidden:YES]; - } } // This is called after profiles have been loaded and preferences registered. diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc index 4599689..25e288d 100644 --- a/chrome/browser/browser_about_handler.cc +++ b/chrome/browser/browser_about_handler.cc @@ -29,7 +29,6 @@ #include "chrome/browser/chrome_thread.h" #include "chrome/browser/defaults.h" #include "chrome/browser/dom_ui/chrome_url_data_manager.h" -#include "chrome/browser/labs.h" #include "chrome/browser/memory_details.h" #include "chrome/browser/metrics/histogram_synchronizer.h" #include "chrome/browser/net/predictor_api.h" @@ -97,7 +96,6 @@ const char kCreditsPath[] = "credits"; const char kCachePath[] = "view-http-cache"; const char kDnsPath[] = "dns"; const char kHistogramsPath[] = "histograms"; -const char kLabsPath[] = "labs"; const char kMemoryRedirectPath[] = "memory-redirect"; const char kMemoryPath[] = "memory"; const char kStatsPath[] = "stats"; @@ -129,7 +127,6 @@ const char *kAllAboutPaths[] = { kCreditsPath, kDnsPath, kHistogramsPath, - kLabsPath, kMemoryPath, kNetInternalsPath, kPluginsPath, @@ -253,17 +250,13 @@ std::string AboutAbout() { html.append("<html><head><title>About Pages</title></head><body>\n"); html.append("<h2>List of About pages</h2><ul>\n"); for (size_t i = 0; i < arraysize(kAllAboutPaths); i++) { - if (kAllAboutPaths[i] == kLabsPath && !about_labs::IsEnabled()) - continue; - if (kAllAboutPaths[i] == kAppCacheInternalsPath || + if (kAllAboutPaths[i] == kNetInternalsPath || + kAllAboutPaths[i] == kPluginsPath || kAllAboutPaths[i] == kCachePath || - kAllAboutPaths[i] == kLabsPath || - kAllAboutPaths[i] == kNetInternalsPath || - kAllAboutPaths[i] == kPluginsPath) { + kAllAboutPaths[i] == kAppCacheInternalsPath) html.append("<li><a href='chrome://"); - } else { + else html.append("<li><a href='chrome://about/"); - } html.append(kAllAboutPaths[i]); html.append("/'>about:"); html.append(kAllAboutPaths[i]); @@ -1132,15 +1125,6 @@ bool WillHandleBrowserAboutURL(GURL* url, Profile* profile) { return true; } - if (about_labs::IsEnabled()) { - // Rewrite about:labs and about:vaporware to chrome://labs/. - if (LowerCaseEqualsASCII(url->spec(), chrome::kAboutLabsURL) || - LowerCaseEqualsASCII(url->spec(), chrome::kAboutVaporwareURL)) { - *url = GURL(chrome::kChromeUILabsURL); - return true; - } - } - // Rewrite about:net-internals/* URLs to chrome://net-internals/* if (StartsWithAboutSpecifier(*url, chrome::kAboutNetInternalsURL)) { *url = RemapAboutURL(chrome::kNetworkViewInternalsURL, *url); diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index 436de42..1c243e7 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -43,7 +43,6 @@ #include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/first_run/first_run.h" #include "chrome/browser/jankometer.h" -#include "chrome/browser/labs.h" #include "chrome/browser/metrics/histogram_synchronizer.h" #include "chrome/browser/metrics/metrics_log.h" #include "chrome/browser/metrics/metrics_service.h" @@ -1183,9 +1182,6 @@ int BrowserMain(const MainFunctionParams& parameters) { PrefService* user_prefs = profile->GetPrefs(); DCHECK(user_prefs); - // Convert active labs into switches. Modifies the current command line. - about_labs::ConvertLabsToSwitches(profile, CommandLine::ForCurrentProcess()); - // Tests should be able to tune login manager before showing it. // Thus only show login manager in normal (non-testing) mode. if (!parameters.ui_task) { diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd index 613418c..648ba2b 100644 --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd @@ -41,7 +41,6 @@ without changes to the corresponding grd file. eadeae--> <include name="IDR_HISTORY_HTML" file="resources\history.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_HISTORY2_HTML" file="resources\history2.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_INCOGNITO_TAB_HTML" file="resources\incognito_tab.html" flattenhtml="true" type="BINDATA" /> - <include name="IDR_LABS_HTML" file="resources\labs.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_NEW_INCOGNITO_TAB_THEME_CSS" file="resources\new_incognito_tab_theme.css" flattenhtml="true" type="BINDATA" /> <include name="IDR_NEW_NEW_TAB_HTML" file="resources\new_new_tab.html" flattenhtml="true" type="BINDATA" /> <include name="IDR_NEW_TAB_THEME_CSS" file="resources\new_tab_theme.css" flattenhtml="true" type="BINDATA" /> diff --git a/chrome/browser/dom_ui/dom_ui_factory.cc b/chrome/browser/dom_ui/dom_ui_factory.cc index 251f646..0737acf 100644 --- a/chrome/browser/dom_ui/dom_ui_factory.cc +++ b/chrome/browser/dom_ui/dom_ui_factory.cc @@ -13,7 +13,6 @@ #include "chrome/browser/dom_ui/history_ui.h" #include "chrome/browser/dom_ui/history2_ui.h" #include "chrome/browser/dom_ui/html_dialog_ui.h" -#include "chrome/browser/dom_ui/labs_ui.h" #include "chrome/browser/dom_ui/net_internals_ui.h" #include "chrome/browser/dom_ui/new_tab_ui.h" #include "chrome/browser/dom_ui/options_ui.h" @@ -23,7 +22,6 @@ #include "chrome/browser/extensions/extension_dom_ui.h" #include "chrome/browser/extensions/extensions_service.h" #include "chrome/browser/extensions/extensions_ui.h" -#include "chrome/browser/labs.h" #include "chrome/browser/printing/print_dialog_cloud.h" #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/tab_contents.h" @@ -118,8 +116,6 @@ static DOMUIFactoryFunction GetDOMUIFactoryFunction(const GURL& url) { return &NewDOMUI<HistoryUI>; if (url.host() == chrome::kChromeUIHistory2Host) return &NewDOMUI<HistoryUI2>; - if (about_labs::IsEnabled() && url.host() == chrome::kChromeUILabsHost) - return &NewDOMUI<LabsUI>; if (url.host() == chrome::kChromeUINetInternalsHost) return &NewDOMUI<NetInternalsUI>; if (url.host() == chrome::kChromeUIPluginsHost) @@ -233,9 +229,6 @@ RefCountedMemory* DOMUIFactory::GetFaviconResourceBytes(Profile* profile, if (page_url.host() == chrome::kChromeUIHistory2Host) return HistoryUI2::GetFaviconResourceBytes(); - if (about_labs::IsEnabled() && page_url.host() == chrome::kChromeUILabsHost) - return LabsUI::GetFaviconResourceBytes(); - if (page_url.host() == chrome::kChromeUIOptionsHost) return OptionsUI::GetFaviconResourceBytes(); diff --git a/chrome/browser/dom_ui/labs_ui.cc b/chrome/browser/dom_ui/labs_ui.cc deleted file mode 100644 index 3e02112..0000000 --- a/chrome/browser/dom_ui/labs_ui.cc +++ /dev/null @@ -1,196 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/browser/dom_ui/labs_ui.h" - -#include <string> - -#include "app/l10n_util.h" -#include "app/resource_bundle.h" -#include "base/singleton.h" -#include "base/values.h" -#include "chrome/browser/browser_list.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/chrome_thread.h" -#include "chrome/browser/dom_ui/chrome_url_data_manager.h" -#include "chrome/browser/labs.h" -#include "chrome/browser/prefs/pref_service.h" -#include "chrome/common/jstemplate_builder.h" -#include "chrome/common/pref_names.h" -#include "chrome/common/url_constants.h" -#include "grit/browser_resources.h" -#include "grit/chromium_strings.h" -#include "grit/generated_resources.h" -#include "grit/theme_resources.h" - -namespace { - -/////////////////////////////////////////////////////////////////////////////// -// -// LabsUIHTMLSource -// -/////////////////////////////////////////////////////////////////////////////// - -class LabsUIHTMLSource : public ChromeURLDataManager::DataSource { - public: - LabsUIHTMLSource() - : DataSource(chrome::kChromeUILabsHost, MessageLoop::current()) {} - - // Called when the network layer has requested a resource underneath - // the path we registered. - virtual void StartDataRequest(const std::string& path, - bool is_off_the_record, - int request_id); - virtual std::string GetMimeType(const std::string&) const { - return "text/html"; - } - - private: - ~LabsUIHTMLSource() {} - - DISALLOW_COPY_AND_ASSIGN(LabsUIHTMLSource); -}; - -void LabsUIHTMLSource::StartDataRequest(const std::string& path, - bool is_off_the_record, - int request_id) { - // Strings used in the JsTemplate file. - DictionaryValue localized_strings; - localized_strings.SetString("labsTitle", - l10n_util::GetStringUTF16(IDS_LABS_TITLE)); - localized_strings.SetString("labsLongTitle", - l10n_util::GetStringUTF16(IDS_LABS_LONG_TITLE)); - localized_strings.SetString("labsTableTitle", - l10n_util::GetStringUTF16(IDS_LABS_TABLE_TITLE)); - localized_strings.SetString("labsNoExperimentsAvailable", - l10n_util::GetStringUTF16(IDS_LABS_NO_EXPERIMENTS_AVAILABLE)); - localized_strings.SetString("labsBlurb", l10n_util::GetStringFUTF16( - IDS_LABS_BLURB, - l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); - localized_strings.SetString("labsRestartNotice", l10n_util::GetStringFUTF16( - IDS_LABS_RESTART_NOTICE, - l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); - localized_strings.SetString("labsRestartButton", - l10n_util::GetStringUTF16(IDS_LABS_RESTART_BUTTON)); - localized_strings.SetString("disable", - l10n_util::GetStringUTF16(IDS_LABS_DISABLE)); - localized_strings.SetString("enable", - l10n_util::GetStringUTF16(IDS_LABS_ENABLE)); - - ChromeURLDataManager::DataSource::SetFontAndTextDirection(&localized_strings); - - static const base::StringPiece labs_html( - ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_LABS_HTML)); - std::string full_html(labs_html.data(), labs_html.size()); - jstemplate_builder::AppendJsonHtml(&localized_strings, &full_html); - jstemplate_builder::AppendI18nTemplateSourceHtml(&full_html); - jstemplate_builder::AppendI18nTemplateProcessHtml(&full_html); - jstemplate_builder::AppendJsTemplateSourceHtml(&full_html); - - scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); - html_bytes->data.resize(full_html.size()); - std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); - - SendResponse(request_id, html_bytes); -} - -//////////////////////////////////////////////////////////////////////////////// -// -// LabsDOMHandler -// -//////////////////////////////////////////////////////////////////////////////// - -// The handler for Javascript messages for the chrome://labs/ page. -class LabsDOMHandler : public DOMMessageHandler { - public: - LabsDOMHandler() {} - virtual ~LabsDOMHandler() {} - - // DOMMessageHandler implementation. - virtual void RegisterMessages(); - - // Callback for the "requestLabsExperiments" message. - void HandleRequestLabsExperiments(const ListValue* args); - - // Callback for the "enableLabsExperiment" message. - void HandleEnableLabsExperimentMessage(const ListValue* args); - - // Callback for the "restartBrowser" message. Restores all tabs on restart. - void HandleRestartBrowser(const ListValue* args); - - private: - DISALLOW_COPY_AND_ASSIGN(LabsDOMHandler); -}; - -void LabsDOMHandler::RegisterMessages() { - dom_ui_->RegisterMessageCallback("requestLabsExperiments", - NewCallback(this, &LabsDOMHandler::HandleRequestLabsExperiments)); - dom_ui_->RegisterMessageCallback("enableLabsExperiment", - NewCallback(this, &LabsDOMHandler::HandleEnableLabsExperimentMessage)); - dom_ui_->RegisterMessageCallback("restartBrowser", - NewCallback(this, &LabsDOMHandler::HandleRestartBrowser)); -} - -void LabsDOMHandler::HandleRequestLabsExperiments(const ListValue* args) { - DictionaryValue results; - results.Set("labsExperiments", - about_labs::GetLabsExperimentsData(dom_ui_->GetProfile())); - results.SetBoolean("needsRestart", - about_labs::IsRestartNeededToCommitChanges()); - dom_ui_->CallJavascriptFunction(L"returnLabsExperiments", results); -} - -void LabsDOMHandler::HandleEnableLabsExperimentMessage(const ListValue* args) { - DCHECK_EQ(2u, args->GetSize()); - if (args->GetSize() != 2) - return; - - std::string experiment_internal_name; - std::string enable_str; - if (!args->GetString(0, &experiment_internal_name) || - !args->GetString(1, &enable_str)) - return; - - about_labs::SetExperimentEnabled( - dom_ui_->GetProfile(), experiment_internal_name, enable_str == "true"); -} - -void LabsDOMHandler::HandleRestartBrowser(const ListValue* args) { - // Set the flag to restore state after the restart. - PrefService* pref_service = g_browser_process->local_state(); - pref_service->SetBoolean(prefs::kRestartLastSessionOnShutdown, true); - BrowserList::CloseAllBrowsersAndExit(); -} - -} // namespace - -/////////////////////////////////////////////////////////////////////////////// -// -// LabsUI -// -/////////////////////////////////////////////////////////////////////////////// - -LabsUI::LabsUI(TabContents* contents) : DOMUI(contents) { - AddMessageHandler((new LabsDOMHandler())->Attach(this)); - - LabsUIHTMLSource* html_source = new LabsUIHTMLSource(); - - // Set up the chrome://labs/ source. - ChromeThread::PostTask( - ChromeThread::IO, FROM_HERE, - NewRunnableMethod(Singleton<ChromeURLDataManager>::get(), - &ChromeURLDataManager::AddDataSource, - make_scoped_refptr(html_source))); -} - -// static -RefCountedMemory* LabsUI::GetFaviconResourceBytes() { - return ResourceBundle::GetSharedInstance(). - LoadDataResourceBytes(IDR_LABS); -} - -// static -void LabsUI::RegisterUserPrefs(PrefService* prefs) { - prefs->RegisterListPref(prefs::kEnabledLabsExperiments); -} diff --git a/chrome/browser/dom_ui/labs_ui.h b/chrome/browser/dom_ui/labs_ui.h deleted file mode 100644 index 0919030..0000000 --- a/chrome/browser/dom_ui/labs_ui.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2010 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. - -#ifndef CHROME_BROWSER_DOM_UI_LABS_UI_H_ -#define CHROME_BROWSER_DOM_UI_LABS_UI_H_ -#pragma once - -#include "chrome/browser/dom_ui/dom_ui.h" - -class PrefService; -class RefCountedMemory; - -class LabsUI : public DOMUI { - public: - explicit LabsUI(TabContents* contents); - - static RefCountedMemory* GetFaviconResourceBytes(); - static void RegisterUserPrefs(PrefService* prefs); - - private: - DISALLOW_COPY_AND_ASSIGN(LabsUI); -}; - -#endif // CHROME_BROWSER_DOM_UI_LABS_UI_H_ diff --git a/chrome/browser/dom_ui/plugins_ui.cc b/chrome/browser/dom_ui/plugins_ui.cc index a52fc88..e529a68 100644 --- a/chrome/browser/dom_ui/plugins_ui.cc +++ b/chrome/browser/dom_ui/plugins_ui.cc @@ -5,6 +5,7 @@ #include "chrome/browser/dom_ui/plugins_ui.h" #include <algorithm> +#include <set> #include <string> #include <vector> @@ -147,6 +148,20 @@ class PluginsDOMHandler : public DOMMessageHandler { void HandleShowTermsOfServiceMessage(const ListValue* args); private: + // Creates a dictionary containing all the information about the given plugin; + // this is put into the list to "return" for the "requestPluginsData" message. + DictionaryValue* CreatePluginDetailValue( + const WebPluginInfo& plugin, + const std::set<string16>& plugin_blacklist_set); + + // Creates a dictionary containing the important parts of the information + // about the given plugin; this is put into a list and saved in prefs. + DictionaryValue* CreatePluginSummaryValue(const WebPluginInfo& plugin); + + // Update the user preferences to reflect the current (user-selected) state of + // plugins. + void UpdatePreferences(); + DISALLOW_COPY_AND_ASSIGN(PluginsDOMHandler); }; @@ -160,9 +175,10 @@ void PluginsDOMHandler::RegisterMessages() { } void PluginsDOMHandler::HandleRequestPluginsData(const ListValue* args) { - DictionaryValue results; - results.Set("plugins", plugin_updater::GetPluginGroupsData()); - dom_ui_->CallJavascriptFunction(L"returnPluginsData", results); + DictionaryValue* results = new DictionaryValue(); + results->Set("plugins", plugin_updater::GetPluginGroupsData()); + + dom_ui_->CallJavascriptFunction(L"returnPluginsData", *results); } void PluginsDOMHandler::HandleEnablePluginMessage(const ListValue* args) { diff --git a/chrome/browser/labs.cc b/chrome/browser/labs.cc deleted file mode 100644 index 6bd1c27..0000000 --- a/chrome/browser/labs.cc +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) 2010 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. - -#include "chrome/browser/labs.h" - -#include <algorithm> -#include <iterator> -#include <map> -#include <set> - -#include "app/l10n_util.h" -#include "base/command_line.h" -#include "base/values.h" -#include "chrome/browser/platform_util.h" -#include "chrome/browser/prefs/pref_service.h" -#include "chrome/browser/profile.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/common/pref_names.h" -#include "grit/generated_resources.h" - -namespace about_labs { - -enum { kOsMac = 1 << 0, kOsWin = 1 << 1, kOsLinux = 1 << 2 }; - -struct Experiment { - // The internal name of the experiment. This is never shown to the user. - // It _is_ however stored in the prefs file, so you shouldn't change the - // name of existing labs. - const char* internal_name; - - // String id of the message containing the experiment's name. - int visible_name_id; - - // String id of the message containing the experiment's description. - int visible_description_id; - - // The platforms the experiment is available on - // Needs to be more than a compile-time #ifdef because of profile sync. - unsigned supported_platforms; // bitmask - - // The commandline parameter that's added when this lab is active. This is - // different from |internal_name| so that the commandline flag can be - // renamed without breaking the prefs file. - const char* command_line; -}; - -const Experiment kExperiments[] = { - { - "expose-for-tabs", - IDS_LABS_TABPOSE_NAME, - IDS_LABS_TABPOSE_DESCRIPTION, - kOsMac, -#if defined(OS_MACOSX) - // The switch exists only on OS X. - switches::kEnableExposeForTabs -#else - "" -#endif - }, - { - "vertical-tabs", - IDS_LABS_LEFTTABS_NAME, - IDS_LABS_LEFTTABS_DESCRIPTION, - kOsWin, - switches::kEnableVerticalTabs - } -}; - -// Extracts the list of enabled lab experiments from a profile and stores them -// in a set. -void GetEnabledLabs(const PrefService* prefs, std::set<std::string>* result) { - const ListValue* enabled_experiments = prefs->GetList( - prefs::kEnabledLabsExperiments); - if (!enabled_experiments) - return; - - for (ListValue::const_iterator it = enabled_experiments->begin(); - it != enabled_experiments->end(); - ++it) { - std::string experiment_name; - if (!(*it)->GetAsString(&experiment_name)) { - LOG(WARNING) << "Invalid entry in " << prefs::kEnabledLabsExperiments; - continue; - } - result->insert(experiment_name); - } -} - -// Takes a set of enabled lab experiments -void SetEnabledLabs( - PrefService* prefs, const std::set<std::string>& enabled_experiments) { - ListValue* experiments_list = prefs->GetMutableList( - prefs::kEnabledLabsExperiments); - if (!experiments_list) - return; - - experiments_list->Clear(); - for (std::set<std::string>::const_iterator it = enabled_experiments.begin(); - it != enabled_experiments.end(); - ++it) { - experiments_list->Append(new StringValue(*it)); - } -} - -// Removes all experiments from prefs::kEnabledLabsExperiments that are -// unknown, to prevent this list to become very long as experiments are added -// and removed. -void SanitizeList(PrefService* prefs) { - std::set<std::string> known_experiments; - for (size_t i = 0; i < arraysize(kExperiments); ++i) - known_experiments.insert(kExperiments[i].internal_name); - - std::set<std::string> enabled_experiments; - GetEnabledLabs(prefs, &enabled_experiments); - - std::set<std::string> new_enabled_experiments; - std::set_intersection( - known_experiments.begin(), known_experiments.end(), - enabled_experiments.begin(), enabled_experiments.end(), - std::inserter(new_enabled_experiments, new_enabled_experiments.begin())); - - SetEnabledLabs(prefs, new_enabled_experiments); -} - -void GetSanitizedEnabledLabs( - PrefService* prefs, std::set<std::string>* result) { - SanitizeList(prefs); - GetEnabledLabs(prefs, result); -} - -int GetCurrentPlatform() { -#if defined(OS_MACOSX) - return kOsMac; -#elif defined(OS_WIN) - return kOsWin; -#elif defined(OS_LINUX) - return kOsLinux; -#else -#error Unknown platform -#endif -} - -bool IsEnabled() { -#if defined(OS_CHROMEOS) - // ChromeOS uses a different mechanism for about:labs; integrated with their - // dom ui options. - return false; -#elif defined(GOOGLE_CHROME_BUILD) - // Don't enable this on the stable channel. - return platform_util::GetVersionStringModifier() != string16(); -#else - return true; -#endif -} - -void ConvertLabsToSwitches(Profile* profile, CommandLine* command_line) { - // Do not activate labs features on the stable channel. - if (!IsEnabled()) - return; - - std::set<std::string> enabled_experiments; - GetSanitizedEnabledLabs(profile->GetPrefs(), &enabled_experiments); - - std::map<std::string, const Experiment*> experiments; - for (size_t i = 0; i < arraysize(kExperiments); ++i) - experiments[kExperiments[i].internal_name] = &kExperiments[i]; - - for (std::set<std::string>::iterator it = enabled_experiments.begin(); - it != enabled_experiments.end(); - ++it) { - const std::string& experiment_name = *it; - std::map<std::string, const Experiment*>::iterator experiment = - experiments.find(experiment_name); - DCHECK(experiment != experiments.end()); - if (experiment == experiments.end()) - continue; - - command_line->AppendSwitch(experiment->second->command_line); - } -} - -ListValue* GetLabsExperimentsData(Profile* profile) { - std::set<std::string> enabled_experiments; - GetSanitizedEnabledLabs(profile->GetPrefs(), &enabled_experiments); - - int current_platform = GetCurrentPlatform(); - - ListValue* experiments_data = new ListValue(); - for (size_t i = 0; i < arraysize(kExperiments); ++i) { - const Experiment& experiment = kExperiments[i]; - if (!(experiment.supported_platforms & current_platform)) - continue; - - DictionaryValue* data = new DictionaryValue(); - data->SetString("internal_name", experiment.internal_name); - data->SetString("name", - l10n_util::GetStringUTF16(experiment.visible_name_id)); - data->SetString("description", - l10n_util::GetStringUTF16( - experiment.visible_description_id)); - data->SetBoolean("enabled", - enabled_experiments.count(experiment.internal_name) > 0); - - experiments_data->Append(data); - } - return experiments_data; -} - -static bool needs_restart_ = false; - -bool IsRestartNeededToCommitChanges() { - return needs_restart_; -} - -void SetExperimentEnabled( - Profile* profile, const std::string& internal_name, bool enable) { - needs_restart_ = true; - - std::set<std::string> enabled_experiments; - GetSanitizedEnabledLabs(profile->GetPrefs(), &enabled_experiments); - - if (enable) - enabled_experiments.insert(internal_name); - else - enabled_experiments.erase(internal_name); - - SetEnabledLabs(profile->GetPrefs(), enabled_experiments); -} - -} // namespace Labs diff --git a/chrome/browser/labs.h b/chrome/browser/labs.h deleted file mode 100644 index 0c61b95..0000000 --- a/chrome/browser/labs.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2010 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. - -#ifndef CHROME_BROWSER_LABS_H_ -#define CHROME_BROWSER_LABS_H_ -#pragma once - -#include <string> - -class CommandLine; -class ListValue; -class Profile; - -// Can't be called "labs", that collides with the C function |labs()|. -namespace about_labs { - -// Returns if Labs is enabled (it isn't on the stable channel). -bool IsEnabled(); - -// Reads the Labs pref from |profile| and adds the commandline flags belonging -// to the active experiments to |command_line|. -void ConvertLabsToSwitches(Profile* profile, CommandLine* command_line); - -// Get a list of all available experiments. The caller owns the result. -ListValue* GetLabsExperimentsData(Profile* profile); - -// Returns true if one of the experiment flags has been flipped since startup. -bool IsRestartNeededToCommitChanges(); - -// Enables or disables the experiment with id |internal_name|. -void SetExperimentEnabled( - Profile* profile, const std::string& internal_name, bool enable); - -} // namespace Labs - -#endif // CHROME_BROWSER_LABS_H_ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 5526d53..93bb6be 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -12,7 +12,6 @@ #include "chrome/browser/browser_shutdown.h" #include "chrome/browser/cookie_modal_dialog.h" #include "chrome/browser/debugger/devtools_manager.h" -#include "chrome/browser/dom_ui/labs_ui.h" #include "chrome/browser/dom_ui/new_tab_ui.h" #include "chrome/browser/dom_ui/plugins_ui.h" #include "chrome/browser/download/download_manager.h" @@ -27,7 +26,6 @@ #include "chrome/browser/host_content_settings_map.h" #include "chrome/browser/host_zoom_map.h" #include "chrome/browser/intranet_redirect_detector.h" -#include "chrome/browser/labs.h" #include "chrome/browser/metrics/metrics_log.h" #include "chrome/browser/metrics/metrics_service.h" #include "chrome/browser/net/chrome_url_request_context.h" @@ -115,10 +113,8 @@ void RegisterUserPrefs(PrefService* user_prefs) { TemplateURLPrepopulateData::RegisterUserPrefs(user_prefs); ExtensionDOMUI::RegisterUserPrefs(user_prefs); ExtensionsUI::RegisterUserPrefs(user_prefs); - LabsUI::RegisterUserPrefs(user_prefs); NewTabUI::RegisterUserPrefs(user_prefs); - if (about_labs::IsEnabled()) - PluginsUI::RegisterUserPrefs(user_prefs); + PluginsUI::RegisterUserPrefs(user_prefs); HostContentSettingsMap::RegisterUserPrefs(user_prefs); HostZoomMap::RegisterUserPrefs(user_prefs); DevToolsManager::RegisterUserPrefs(user_prefs); diff --git a/chrome/browser/resources/labs.html b/chrome/browser/resources/labs.html deleted file mode 100644 index edabed6..0000000 --- a/chrome/browser/resources/labs.html +++ /dev/null @@ -1,311 +0,0 @@ -<!DOCTYPE HTML> -<html i18n-values="dir:textdirection;"> -<head> -<meta charset="utf-8"> -<title i18n-content="labsTitle"></title> -<style> - -body { - margin: 10px; - min-width: 47em; -} - -a { - color: blue; - font-size: 103%; -} - -div#header { - margin-bottom: 1.05em; - overflow: hidden; - padding-bottom: 1.5em; - padding-left: 0; - padding-top: 1.5em; - position: relative; -} - -html[dir=rtl] #header { - padding-right: 0; -} - -#header h1 { - background: url('../../app/theme/extensions_section.png') 0px 20px no-repeat; - display: inline; - margin: 0; - padding-bottom: 43px; - padding-left: 75px; - padding-top: 40px; -} - -html[dir=rtl] #header h1 { - background: url('../../app/theme/extensions_section.png') right no-repeat; - padding-right: 95px; - padding-left: 0; -} - -h1 { - font-size: 156%; - font-weight: bold; - padding: 0; - margin: 0; -} - -div.blurb { - padding-bottom: 1.5em; -} - -div.content { - font-size: 88%; - margin-top: 5px; -} - -.section-header { - background: #ebeff9; - border-top: 1px solid #b5c7de; - font-size: 99%; - padding-bottom: 2px; - padding-left: 5px; - padding-top: 3px; - width: 100%; -} - -html[dir=rtl] .section-header { - padding-right: 5px; - padding-left: 0; -} - -.section-header > table tr td:first-child { - width: 100%; -} - -.section-header > table { - width: 100%; -} - -.section-header-title { - font-weight: bold; -} - -.vbox-container { - display: -webkit-box; - -webkit-box-orient: vertical; -} - -.wbox { - display: -webkit-box; - -webkit-box-align: stretch; - -webkit-box-flex: 1; -} - -#top { - padding-right: 5px; -} - -html[dir=rtl] #top { - padding-left: 5px; - padding-right: 0; -} - -.experiment-enabled > td { - padding-bottom: 4px; - padding-top: 5px; -} - -.experiment { - border-bottom: 1px solid #cdcdcd; -} - -/* Indent the text related to each experiment. */ -.experiment-text { - padding-left: 5px; -} - -html[dir=rtl] .experiment-text { - padding-right: 5px; - padding-left: 0; -} - -.experiment-name { - font-weight: bold; -} - -.no-experiments { - margin: 6em 0 0; - text-align: center; - font-size: 1.2em; -} - -/* Match the indentation of .experiment-text. */ -.experiment-actions { - padding-left: 5px; - margin-top: 0.2em; - margin-bottom: 0.2em; -} - -html[dir=rtl] .experiment-actions { - padding-right: 5px; - padding-left: 0; -} - -div.needs-restart { - padding-top: 10px; - padding-left: 5px; -} - -button { - font-size: 104%; -} - -</style> -<script> - -/** - * This variable structure is here to document the structure that the template - * expects to correctly populate the page. - */ -var labsExperimentsDataFormat = { - 'labsExperiments': [ - { - 'internal_name': 'Experiment ID string', - 'name': 'Experiment Name', - 'description': 'description', - 'enabled': true - } - ], - 'needsRestart': false -}; - -/** - * Takes the |labsExperimentsData| input argument which represents data about - * the currently available experiments and populates the html jstemplate - * with that data. It expects an object structure like the above. - * @param {Object} labsExperimentsData Detailed info about available experiments - */ -function renderTemplate(labsExperimentsData) { - // This is the javascript code that processes the template: - var input = new JsEvalContext(labsExperimentsData); - var output = document.getElementById('labsExperimentTemplate'); - jstProcess(input, output); -} - -/** - * Asks the C++ LabsDOMHandler to get details about the available experiments - * and return detailed data about the configuration. The LabsDOMHandler - * should reply to returnLabsExperiments() (below). - */ -function requestLabsExperimentsData() { - chrome.send('requestLabsExperiments', []); -} - -/** - * Asks the C++ LabsDOMHandler to restart the browser (restoring tabs). - */ -function restartBrowser() { - chrome.send('restartBrowser', []); -} - -/** - * Called by the dom_ui to re-populate the page with data representing the - * current state of installed experiments. - */ -function returnLabsExperiments(labsExperimentsData){ - var bodyContainer = document.getElementById('body-container'); - renderTemplate(labsExperimentsData); - bodyContainer.style.visibility = 'visible'; -} - -/** - * Handles a 'enable' or 'disable' button getting clicked. - */ -function handleEnableExperiment(node, enable) { - // Tell the C++ LabsDOMHandler to enable/disable the experiment. - chrome.send('enableLabsExperiment', [String(node.internal_name), - String(enable)]); - requestLabsExperimentsData(); -} - -// Get data and have it displayed upon loading. -document.addEventListener('DOMContentLoaded', requestLabsExperimentsData); - -</script> -</head> -<body i18n-values=".style.fontFamily:fontfamily;.style.fontSize:fontsize"> -<div id="body-container" style="visibility:hidden"> - - <div id="header"><h1 i18n-content="labsLongTitle">TITLE</h1></div> - - <div class="blurb" i18n-content="labsBlurb">BLURB</div> - - <div id="labsExperimentTemplate"> - - <div id="container" class="vbox-container"> - <div id="top" class="wbox"> - - <div class="section-header"> - <table cellpadding="0" cellspacing="0"><tr valign="center"> - <td> - <span class="section-header-title" i18n-content="labsTableTitle" - >TITLE</span> - </td> - </tr></table> - </div> - - </div> - </div> - - <div class="content"> - <div class="experiment-name no-experiments" - jsdisplay="labsExperiments.length === 0"> - <div i18n-content="labsNoExperimentsAvailable" - >NO_EXPERIMENTS_ARE_AVAILABLE</div> - </div> - - <div jsdisplay="labsExperiments.length > 0"> - <div class="experiment" jsselect="labsExperiments"> - <table width="100%" cellpadding="2" cellspacing="0"> - <tr class="experiment-enabled"> - <td valign="top"> - <div class="experiment-text"> - <div> - <span class="experiment-name" - jscontent="name">NAME</span> - <div> - <span jsvalues=".innerHTML:description"> - </div> - </div> - </div> - <div class="experiment-actions"> - <span> - <a - jsvalues=".internal_name:internal_name" - jsdisplay="enabled" - onclick="handleEnableExperiment(this, false)" - href="javascript:void(0);" - i18n-content="disable" - >DISABLE</a> - <a - jsvalues=".internal_name:internal_name" - jsdisplay="!enabled" - onclick="handleEnableExperiment(this, true)" - href="javascript:void(0);" - i18n-content="enable" - >ENABLE</a> - </span> - </div> - </td> - </tr> - </table> - </div> - </div> - - <div class="needs-restart" jsdisplay="needsRestart"> - <div i18n-content="labsRestartNotice">NEEDS_RESTART</div> - <button type="button" - onclick="restartBrowser();" - i18n-content="labsRestartButton">RESTART</button> - </div> - </div> - </div> -</div> -</body> -</html> diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 824e872..b1f14b2 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1240,8 +1240,6 @@ 'browser/dom_ui/html_dialog_ui.h', 'browser/dom_ui/import_data_handler.cc', 'browser/dom_ui/import_data_handler.h', - 'browser/dom_ui/labs_ui.cc', - 'browser/dom_ui/labs_ui.h', 'browser/dom_ui/mediaplayer_ui.cc', 'browser/dom_ui/mediaplayer_ui.h', 'browser/dom_ui/most_visited_handler.cc', @@ -1966,8 +1964,6 @@ 'browser/jsmessage_box_client.h', 'browser/keychain_mac.cc', 'browser/keychain_mac.h', - 'browser/labs.cc', - 'browser/labs.h', 'browser/language_combobox_model.cc', 'browser/language_combobox_model.h', 'browser/language_order_table_model.cc', diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 2ce27d1..cf74af4 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -389,9 +389,6 @@ const char kDeleteTimePeriod[] = "browser.clear_data.time_period"; // Boolean pref to define the default values for using spellchecker. const char kEnableSpellCheck[] = "browser.enable_spellchecking"; -// List of names of the enabled labs experiments (see chrome/browser/labs.cc). -const char kEnabledLabsExperiments[] = "browser.enabled_labs_experiments"; - // Boolean pref to define the default values for using auto spell correct. const char kEnableAutoSpellCorrect[] = "browser.enable_autospellcorrect"; diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 885cb67..232d0fd 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -149,7 +149,6 @@ extern const char kDeleteCookies[]; extern const char kDeletePasswords[]; extern const char kDeleteFormData[]; extern const char kEnableSpellCheck[]; -extern const char kEnabledLabsExperiments[]; extern const char kEnableAutoSpellCorrect[]; extern const char kDeleteTimePeriod[]; extern const char kPrintingPageHeaderLeft[]; diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc index 031a13d..0270e48 100644 --- a/chrome/common/url_constants.cc +++ b/chrome/common/url_constants.cc @@ -41,23 +41,21 @@ const char* kSavableSchemes[] = { NULL }; -const char kAboutAboutURL[] = "about:about"; const char kAboutAppCacheInternalsURL[] = "about:appcache-internals"; const char kAboutBlankURL[] = "about:blank"; const char kAboutCacheURL[] = "about:cache"; const char kAboutCrashURL[] = "about:crash"; const char kAboutCreditsURL[] = "about:credits"; -const char kAboutDNSURL[] = "about:dns"; const char kAboutHangURL[] = "about:hang"; -const char kAboutHistogramsURL[] = "about:histograms"; -const char kAboutLabsURL[] = "about:labs"; const char kAboutMemoryURL[] = "about:memory"; const char kAboutNetInternalsURL[] = "about:net-internals"; const char kAboutPluginsURL[] = "about:plugins"; const char kAboutShorthangURL[] = "about:shorthang"; const char kAboutSystemURL[] = "about:system"; const char kAboutTermsURL[] = "about:terms"; -const char kAboutVaporwareURL[] = "about:vaporware"; +const char kAboutAboutURL[] = "about:about"; +const char kAboutDNSURL[] = "about:dns"; +const char kAboutHistogramsURL[] = "about:histograms"; const char kAboutVersionURL[] = "about:version"; // Use an obfuscated URL to make this nondiscoverable, we only want this @@ -73,11 +71,10 @@ const char kChromeUIDownloadsURL[] = "chrome://downloads/"; const char kChromeUIExtensionsURL[] = "chrome://extensions/"; const char kChromeUIFavIconURL[] = "chrome://favicon/"; const char kChromeUIFileBrowseURL[] = "chrome://filebrowse/"; -const char kChromeUIHistory2URL[] = "chrome://history2/"; const char kChromeUIHistoryURL[] = "chrome://history/"; +const char kChromeUIHistory2URL[] = "chrome://history2/"; const char kChromeUIImageBurnerURL[] = "chrome://imageburner/"; const char kChromeUIIPCURL[] = "chrome://about/ipc"; -const char kChromeUILabsURL[] = "chrome://labs/"; const char kChromeUIMediaplayerURL[] = "chrome://mediaplayer/"; const char kChromeUINewTabURL[] = "chrome://newtab"; const char kChromeUIOptionsURL[] = "chrome://options/"; @@ -98,7 +95,6 @@ const char kChromeUIHistoryHost[] = "history"; const char kChromeUIHistory2Host[] = "history2"; const char kChromeUIImageBurnerHost[] = "imageburner"; const char kChromeUIInspectorHost[] = "inspector"; -const char kChromeUILabsHost[] = "labs"; const char kChromeUIMediaplayerHost[] = "mediaplayer"; const char kChromeUINetInternalsHost[] = "net-internals"; const char kChromeUINewTabHost[] = "newtab"; diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h index bb726fe..47b5610 100644 --- a/chrome/common/url_constants.h +++ b/chrome/common/url_constants.h @@ -35,24 +35,22 @@ extern const char kStandardSchemeSeparator[]; extern const char* kSavableSchemes[]; // About URLs (including schemes). -extern const char kAboutAboutURL[]; extern const char kAboutAppCacheInternalsURL[]; extern const char kAboutBlankURL[]; extern const char kAboutBrowserCrash[]; extern const char kAboutCacheURL[]; +extern const char kAboutNetInternalsURL[]; extern const char kAboutCrashURL[]; extern const char kAboutCreditsURL[]; -extern const char kAboutDNSURL[]; extern const char kAboutHangURL[]; -extern const char kAboutHistogramsURL[]; -extern const char kAboutLabsURL[]; extern const char kAboutMemoryURL[]; -extern const char kAboutNetInternalsURL[]; extern const char kAboutPluginsURL[]; extern const char kAboutShorthangURL[]; extern const char kAboutSystemURL[]; extern const char kAboutTermsURL[]; -extern const char kAboutVaporwareURL[]; +extern const char kAboutAboutURL[]; +extern const char kAboutDNSURL[]; +extern const char kAboutHistogramsURL[]; extern const char kAboutVersionURL[]; // chrome: URLs (including schemes). Should be kept in sync with the @@ -66,11 +64,10 @@ extern const char kChromeUIDownloadsURL[]; extern const char kChromeUIExtensionsURL[]; extern const char kChromeUIFavIconURL[]; extern const char kChromeUIFileBrowseURL[]; -extern const char kChromeUIHistory2URL[]; extern const char kChromeUIHistoryURL[]; +extern const char kChromeUIHistory2URL[]; extern const char kChromeUIImageBurnerURL[]; extern const char kChromeUIIPCURL[]; -extern const char kChromeUILabsURL[]; extern const char kChromeUIMediaplayerURL[]; extern const char kChromeUINewTabURL[]; extern const char kChromeUIOptionsURL[]; @@ -89,11 +86,10 @@ extern const char kChromeUIDownloadsHost[]; extern const char kChromeUIExtensionsHost[]; extern const char kChromeUIFavIconHost[]; extern const char kChromeUIFileBrowseHost[]; -extern const char kChromeUIHistory2Host[]; extern const char kChromeUIHistoryHost[]; +extern const char kChromeUIHistory2Host[]; extern const char kChromeUIImageBurnerHost[]; extern const char kChromeUIInspectorHost[]; -extern const char kChromeUILabsHost[]; extern const char kChromeUIMediaplayerHost[]; extern const char kChromeUINetInternalsHost[]; extern const char kChromeUINewTabHost[]; @@ -102,13 +98,13 @@ extern const char kChromeUIPluginsHost[]; extern const char kChromeUIPrintHost[]; extern const char kChromeUIRegisterPageHost[]; extern const char kChromeUIRemotingHost[]; -extern const char kChromeUIRemotingResourcesHost[]; extern const char kChromeUIResourcesHost[]; extern const char kChromeUIScreenshotPath[]; extern const char kChromeUISlideshowHost[]; extern const char kChromeUISyncResourcesHost[]; -extern const char kChromeUIThemePath[]; +extern const char kChromeUIRemotingResourcesHost[]; extern const char kChromeUIThumbnailPath[]; +extern const char kChromeUIThemePath[]; // AppCache related URL. extern const char kAppCacheViewInternalsURL[]; |