Index: chrome/browser/search/contextual_search_promo_source.cc |
diff --git a/chrome/browser/search/contextual_search_promo_source.cc b/chrome/browser/search/contextual_search_promo_source.cc |
index 0b9adf2d78285429453a5c3658472d034d0de67c..7c50b004fecf4a4487408b4b39b8850875bbf24f 100644 |
--- a/chrome/browser/search/contextual_search_promo_source.cc |
+++ b/chrome/browser/search/contextual_search_promo_source.cc |
@@ -7,9 +7,14 @@ |
#include "base/memory/ref_counted_memory.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
+#include "base/values.h" |
#include "chrome/common/url_constants.h" |
#include "grit/browser_resources.h" |
+#include "grit/chromium_strings.h" |
+#include "grit/generated_resources.h" |
+#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
+#include "ui/base/webui/jstemplate_builder.h" |
#include "url/gurl.h" |
namespace { |
@@ -17,6 +22,7 @@ namespace { |
const char kPromoHTMLPath[] = "/promo.html"; |
const char kPromoCSSPath[] = "/promo.css"; |
const char kPromoJSPath[] = "/promo.js"; |
+const char kPromoRobotoPath[] = "/roboto.woff"; |
} // namespace |
@@ -32,11 +38,13 @@ void ContextualSearchPromoSource::StartDataRequest( |
path_and_query); |
std::string path(url.path()); |
if (path == kPromoHTMLPath) { |
- SendResource(IDR_CONTEXTUAL_SEARCH_PROMO_HTML, callback); |
+ SendHtmlWithStrings(callback); |
} else if (path == kPromoCSSPath) { |
SendResource(IDR_CONTEXTUAL_SEARCH_PROMO_CSS, callback); |
} else if (path == kPromoJSPath) { |
SendResource(IDR_CONTEXTUAL_SEARCH_PROMO_JS, callback); |
+ } else if (path == kPromoRobotoPath) { |
+ SendResource(IDR_CONTEXTUAL_SEARCH_ROBOTO_WOFF, callback); |
} else { |
callback.Run(NULL); |
} |
@@ -53,6 +61,7 @@ std::string ContextualSearchPromoSource::GetMimeType( |
if (EndsWith(path, ".png", false)) return "image/png"; |
if (EndsWith(path, ".css", false)) return "text/css"; |
if (EndsWith(path, ".html", false)) return "text/html"; |
+ if (EndsWith(path, ".woff", false)) return "font/woff"; |
return ""; |
} |
@@ -60,9 +69,31 @@ bool ContextualSearchPromoSource::ShouldDenyXFrameOptions() const { |
return false; |
} |
+bool ContextualSearchPromoSource::ShouldAddContentSecurityPolicy() const { |
+ return false; |
+} |
+ |
void ContextualSearchPromoSource::SendResource( |
int resource_id, const content::URLDataSource::GotDataCallback& callback) { |
scoped_refptr<base::RefCountedStaticMemory> response( |
ResourceBundle::GetSharedInstance().LoadDataResourceBytes(resource_id)); |
callback.Run(response.get()); |
} |
+ |
+void ContextualSearchPromoSource::SendHtmlWithStrings( |
+ const content::URLDataSource::GotDataCallback& callback) { |
+ base::DictionaryValue strings_data; |
+ strings_data.SetString( |
+ "description", |
+ l10n_util::GetStringUTF16(IDS_CONTEXTUAL_SEARCH_PROMO_DESCRIPTION)); |
+ strings_data.SetString( |
+ "optIn", l10n_util::GetStringUTF16(IDS_CONTEXTUAL_SEARCH_PROMO_OPTIN)); |
+ strings_data.SetString( |
+ "optOut", l10n_util::GetStringUTF16(IDS_CONTEXTUAL_SEARCH_PROMO_OPTOUT)); |
+ base::StringPiece html( |
+ ResourceBundle::GetSharedInstance().GetRawDataResource( |
+ IDR_CONTEXTUAL_SEARCH_PROMO_HTML)); |
+ webui::UseVersion2 version; |
+ std::string response(webui::GetI18nTemplateHtml(html, &strings_data)); |
+ callback.Run(base::RefCountedString::TakeString(&response)); |
+} |