| Index: chrome/renderer/searchbox/searchbox_extension.cc
|
| diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
|
| index cf42cac0cd6da5d333eabac1ce7b4d3348f94ee1..21bf0b6746f379fb1e3831faa53ebbec5e74bdb1 100644
|
| --- a/chrome/renderer/searchbox/searchbox_extension.cc
|
| +++ b/chrome/renderer/searchbox/searchbox_extension.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/i18n/rtl.h"
|
| #include "base/json/string_escape.h"
|
| +#include "base/metrics/field_trial.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| @@ -61,6 +62,12 @@ base::string16 V8ValueToUTF16(v8::Handle<v8::Value> v) {
|
| return base::string16(reinterpret_cast<const base::char16*>(*s), s.length());
|
| }
|
|
|
| +// Returns whether we should use large icons on NTP.
|
| +bool IsIconNTPEnabled() {
|
| + return StartsWithASCII(base::FieldTrialList::FindFullName("IconNTP"),
|
| + "Enabled", true);
|
| +}
|
| +
|
| // Converts string16 to V8 String.
|
| v8::Handle<v8::String> UTF16ToV8String(v8::Isolate* isolate,
|
| const base::string16& s) {
|
| @@ -99,6 +106,27 @@ v8::Handle<v8::String> GenerateThumbnailURL(
|
| "chrome-search://thumb/%d/%d", render_view_id, most_visited_item_id));
|
| }
|
|
|
| +v8::Handle<v8::String> GenerateLargeIconURL(
|
| + v8::Isolate* isolate,
|
| + int render_view_id,
|
| + InstantRestrictedID most_visited_item_id) {
|
| + const int kIconSize = 96; // To support high DPI; on screen it's 48 dp.
|
| + return UTF8ToV8String(
|
| + isolate,
|
| + base::StringPrintf("chrome-search://large-icon/%d/%d/%d",
|
| + kIconSize, render_view_id, most_visited_item_id));
|
| +}
|
| +
|
| +v8::Handle<v8::String> GenerateFallbackIconURL(
|
| + v8::Isolate* isolate,
|
| + int render_view_id,
|
| + InstantRestrictedID most_visited_item_id) {
|
| + return UTF8ToV8String(
|
| + isolate,
|
| + base::StringPrintf("chrome-search://fallback-icon/,,,,1/%d/%d",
|
| + render_view_id, most_visited_item_id));
|
| +}
|
| +
|
| // Populates a Javascript MostVisitedItem object from |mv_item|.
|
| // NOTE: Includes "url", "title" and "domain" which are private data, so should
|
| // not be returned to the Instant page. These should be erased before returning
|
| @@ -136,6 +164,14 @@ v8::Handle<v8::Object> GenerateMostVisitedItem(
|
| v8::Int32::New(isolate, restricted_id));
|
| obj->Set(v8::String::NewFromUtf8(isolate, "thumbnailUrl"),
|
| GenerateThumbnailURL(isolate, render_view_id, restricted_id));
|
| + if (IsIconNTPEnabled()) {
|
| + // Update website http://www.chromium.org/embeddedsearch when we make this
|
| + // permanent.
|
| + obj->Set(v8::String::NewFromUtf8(isolate, "largeIconUrl"),
|
| + GenerateLargeIconURL(isolate, render_view_id, restricted_id));
|
| + obj->Set(v8::String::NewFromUtf8(isolate, "fallbackIconUrl"),
|
| + GenerateFallbackIconURL(isolate, render_view_id, restricted_id));
|
| + }
|
| obj->Set(v8::String::NewFromUtf8(isolate, "title"),
|
| UTF16ToV8String(isolate, title));
|
| obj->Set(v8::String::NewFromUtf8(isolate, "domain"),
|
|
|