Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(547)

Unified Diff: chrome/browser/ui/webui/flags_ui.cc

Issue 7148023: Add content-security-policy (CSP) to chrome://flags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/flags_ui.cc
===================================================================
--- chrome/browser/ui/webui/flags_ui.cc (revision 89497)
+++ chrome/browser/ui/webui/flags_ui.cc (working copy)
@@ -14,7 +14,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
+#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
#include "chrome/common/jstemplate_builder.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
@@ -32,7 +32,8 @@
#include "chrome/browser/chromeos/login/user_manager.h"
#endif
-namespace {
+static const char kFlagsJs[] = "flags.js";
+static const char kStringsJs[] = "strings.js";
///////////////////////////////////////////////////////////////////////////////
//
@@ -40,87 +41,78 @@
//
///////////////////////////////////////////////////////////////////////////////
-class FlagsUIHTMLSource : public ChromeURLDataManager::DataSource {
+class FlagsUIHTMLSource : public ChromeWebUIDataSource {
public:
- FlagsUIHTMLSource()
- : DataSource(chrome::kChromeUIFlagsHost, MessageLoop::current()) {}
+ FlagsUIHTMLSource();
// Called when the network layer has requested a resource underneath
// the path we registered.
virtual void StartDataRequest(const std::string& path,
bool is_incognito,
int request_id);
- virtual std::string GetMimeType(const std::string&) const {
- return "text/html";
- }
+ virtual std::string GetMimeType(const std::string&) const;
private:
~FlagsUIHTMLSource() {}
-
DISALLOW_COPY_AND_ASSIGN(FlagsUIHTMLSource);
};
-void FlagsUIHTMLSource::StartDataRequest(const std::string& path,
- bool is_incognito,
- int request_id) {
- // Strings used in the JsTemplate file.
- DictionaryValue localized_strings;
- localized_strings.SetString("flagsLongTitle",
- l10n_util::GetStringUTF16(IDS_FLAGS_LONG_TITLE));
- localized_strings.SetString("flagsTableTitle",
- l10n_util::GetStringUTF16(IDS_FLAGS_TABLE_TITLE));
- localized_strings.SetString("flagsNoExperimentsAvailable",
- l10n_util::GetStringUTF16(IDS_FLAGS_NO_EXPERIMENTS_AVAILABLE));
- localized_strings.SetString("flagsWarningHeader", l10n_util::GetStringUTF16(
- IDS_FLAGS_WARNING_HEADER));
- localized_strings.SetString("flagsBlurb", l10n_util::GetStringUTF16(
- IDS_FLAGS_WARNING_TEXT));
- localized_strings.SetString("flagsRestartNotice", l10n_util::GetStringFUTF16(
- IDS_FLAGS_RELAUNCH_NOTICE,
- l10n_util::GetStringUTF16(
+FlagsUIHTMLSource::FlagsUIHTMLSource()
+ : ChromeWebUIDataSource(chrome::kChromeUIFlagsHost) {
+ AddLocalizedString("flagsLongTitle", IDS_FLAGS_LONG_TITLE);
+ AddLocalizedString("flagsTableTitle", IDS_FLAGS_TABLE_TITLE);
+ AddLocalizedString("flagsNoExperimentsAvailable",
+ IDS_FLAGS_NO_EXPERIMENTS_AVAILABLE);
+ AddLocalizedString("flagsWarningHeader", IDS_FLAGS_WARNING_HEADER);
+ AddLocalizedString("flagsBlurb", IDS_FLAGS_WARNING_TEXT);
#if defined(OS_CHROMEOS)
- IDS_PRODUCT_OS_NAME
+ int ids = IDS_PRODUCT_OS_NAME;
#else
- IDS_PRODUCT_NAME
+ int ids = IDS_PRODUCT_NAME;
#endif
- )));
- localized_strings.SetString("flagsRestartButton",
- l10n_util::GetStringUTF16(IDS_FLAGS_RELAUNCH_BUTTON));
- localized_strings.SetString("disable",
- l10n_util::GetStringUTF16(IDS_FLAGS_DISABLE));
- localized_strings.SetString("enable",
- l10n_util::GetStringUTF16(IDS_FLAGS_ENABLE));
+ AddString("flagsRestartNotice",
+ l10n_util::GetStringFUTF16(IDS_FLAGS_RELAUNCH_NOTICE,
+ l10n_util::GetStringUTF16(ids)));
+ AddLocalizedString("flagsRestartButton", IDS_FLAGS_RELAUNCH_BUTTON);
+ AddLocalizedString("disable", IDS_FLAGS_DISABLE);
+ AddLocalizedString("enable", IDS_FLAGS_ENABLE);
+#if defined(OS_CHROMEOS)
+ // Set the strings to show which user can actually change the flags
+ AddLocalizedString("ownerOnly", IDS_OPTIONS_ACCOUNTS_OWNER_ONLY);
+ AddString("ownerUserId",
+ UTF8ToUTF16(chromeos::UserCrosSettingsProvider::cached_owner()));
+#endif
+}
- base::StringPiece html =
- ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_FLAGS_HTML);
+void FlagsUIHTMLSource::StartDataRequest(const std::string& path,
+ bool is_incognito,
+ int request_id) {
+ if (path == kStringsJs) {
+ SendLocalizedStringsAsJSON(request_id);
+ } else {
+ int idr;
+ if (path == kFlagsJs)
+ idr = IDR_FLAGS_JS;
#if defined (OS_CHROMEOS)
- if (!chromeos::UserManager::Get()->current_user_is_owner()) {
- html = ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_FLAGS_HTML_WARNING);
+ else if (!chromeos::UserManager::Get()->current_user_is_owner())
+ idr = IDR_FLAGS_HTML_WARNING;
+#endif
+ else
+ idr = IDR_FLAGS_HTML;
- // Set the strings to show which user can actually change the flags
- localized_strings.SetString("ownerOnly", l10n_util::GetStringUTF16(
- IDS_OPTIONS_ACCOUNTS_OWNER_ONLY));
- localized_strings.SetString("ownerUserId", UTF8ToUTF16(
- chromeos::UserCrosSettingsProvider::cached_owner()));
+ SendFromResourceBundle(request_id, idr);
}
-#endif
- static const base::StringPiece flags_html(html);
- ChromeURLDataManager::DataSource::SetFontAndTextDirection(&localized_strings);
+}
- std::string full_html(flags_html.data(), flags_html.size());
- jstemplate_builder::AppendJsonHtml(&localized_strings, &full_html);
- jstemplate_builder::AppendI18nTemplateSourceHtml(&full_html);
- jstemplate_builder::AppendI18nTemplateProcessHtml(&full_html);
- jstemplate_builder::AppendJsTemplateSourceHtml(&full_html);
+std::string FlagsUIHTMLSource::GetMimeType(const std::string& path) const {
+ if (path == kStringsJs || path == kFlagsJs)
+ return "application/javascript";
- 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);
+ return "text/html";
}
+namespace {
+
////////////////////////////////////////////////////////////////////////////////
//
// FlagsDOMHandler
« chrome/browser/resources/flags.html ('K') | « chrome/browser/ui/webui/chrome_web_ui_data_source.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698