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

Side by Side Diff: chrome/renderer/searchbox/searchbox_extension.cc

Issue 1016793003: [Icons NTP] Make largeIconUrl and fallbackIconUrl available for Local NTP, behind flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added reminder to update website when this is permanent. Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/searchbox/searchbox_extension.h" 5 #include "chrome/renderer/searchbox/searchbox_extension.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/json/string_escape.h" 8 #include "base/json/string_escape.h"
9 #include "base/metrics/field_trial.h"
9 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
11 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/common/instant_types.h" 14 #include "chrome/common/instant_types.h"
14 #include "chrome/common/ntp_logging_events.h" 15 #include "chrome/common/ntp_logging_events.h"
15 #include "chrome/common/url_constants.h" 16 #include "chrome/common/url_constants.h"
16 #include "chrome/grit/renderer_resources.h" 17 #include "chrome/grit/renderer_resources.h"
17 #include "chrome/renderer/searchbox/searchbox.h" 18 #include "chrome/renderer/searchbox/searchbox.h"
18 #include "components/crx_file/id_util.h" 19 #include "components/crx_file/id_util.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 55
55 const char kLTRHtmlTextDirection[] = "ltr"; 56 const char kLTRHtmlTextDirection[] = "ltr";
56 const char kRTLHtmlTextDirection[] = "rtl"; 57 const char kRTLHtmlTextDirection[] = "rtl";
57 58
58 // Converts a V8 value to a string16. 59 // Converts a V8 value to a string16.
59 base::string16 V8ValueToUTF16(v8::Handle<v8::Value> v) { 60 base::string16 V8ValueToUTF16(v8::Handle<v8::Value> v) {
60 v8::String::Value s(v); 61 v8::String::Value s(v);
61 return base::string16(reinterpret_cast<const base::char16*>(*s), s.length()); 62 return base::string16(reinterpret_cast<const base::char16*>(*s), s.length());
62 } 63 }
63 64
65 // Returns whether we should use large icons on NTP.
66 bool IsIconNTPEnabled() {
67 return StartsWithASCII(base::FieldTrialList::FindFullName("IconNTP"),
68 "Enabled", true);
69 }
70
64 // Converts string16 to V8 String. 71 // Converts string16 to V8 String.
65 v8::Handle<v8::String> UTF16ToV8String(v8::Isolate* isolate, 72 v8::Handle<v8::String> UTF16ToV8String(v8::Isolate* isolate,
66 const base::string16& s) { 73 const base::string16& s) {
67 return v8::String::NewFromTwoByte(isolate, 74 return v8::String::NewFromTwoByte(isolate,
68 reinterpret_cast<const uint16_t*>(s.data()), 75 reinterpret_cast<const uint16_t*>(s.data()),
69 v8::String::kNormalString, 76 v8::String::kNormalString,
70 s.size()); 77 s.size());
71 } 78 }
72 79
73 // Converts std::string to V8 String. 80 // Converts std::string to V8 String.
(...skipping 18 matching lines...) Expand all
92 v8::Handle<v8::String> GenerateThumbnailURL( 99 v8::Handle<v8::String> GenerateThumbnailURL(
93 v8::Isolate* isolate, 100 v8::Isolate* isolate,
94 int render_view_id, 101 int render_view_id,
95 InstantRestrictedID most_visited_item_id) { 102 InstantRestrictedID most_visited_item_id) {
96 return UTF8ToV8String( 103 return UTF8ToV8String(
97 isolate, 104 isolate,
98 base::StringPrintf( 105 base::StringPrintf(
99 "chrome-search://thumb/%d/%d", render_view_id, most_visited_item_id)); 106 "chrome-search://thumb/%d/%d", render_view_id, most_visited_item_id));
100 } 107 }
101 108
109 v8::Handle<v8::String> GenerateLargeIconURL(
110 v8::Isolate* isolate,
111 int render_view_id,
112 InstantRestrictedID most_visited_item_id) {
113 const int kIconSize = 96; // To support high DPI; on screen it's 48 dp.
114 return UTF8ToV8String(
115 isolate,
116 base::StringPrintf("chrome-search://large-icon/%d/%d/%d",
117 kIconSize, render_view_id, most_visited_item_id));
118 }
119
120 v8::Handle<v8::String> GenerateFallbackIconURL(
121 v8::Isolate* isolate,
122 int render_view_id,
123 InstantRestrictedID most_visited_item_id) {
124 return UTF8ToV8String(
125 isolate,
126 base::StringPrintf("chrome-search://fallback-icon/,,,,1/%d/%d",
127 render_view_id, most_visited_item_id));
128 }
129
102 // Populates a Javascript MostVisitedItem object from |mv_item|. 130 // Populates a Javascript MostVisitedItem object from |mv_item|.
103 // NOTE: Includes "url", "title" and "domain" which are private data, so should 131 // NOTE: Includes "url", "title" and "domain" which are private data, so should
104 // not be returned to the Instant page. These should be erased before returning 132 // not be returned to the Instant page. These should be erased before returning
105 // the object. See GetMostVisitedItemsWrapper() in searchbox_api.js. 133 // the object. See GetMostVisitedItemsWrapper() in searchbox_api.js.
106 v8::Handle<v8::Object> GenerateMostVisitedItem( 134 v8::Handle<v8::Object> GenerateMostVisitedItem(
107 v8::Isolate* isolate, 135 v8::Isolate* isolate,
108 int render_view_id, 136 int render_view_id,
109 InstantRestrictedID restricted_id, 137 InstantRestrictedID restricted_id,
110 const InstantMostVisitedItem& mv_item) { 138 const InstantMostVisitedItem& mv_item) {
111 // We set the "dir" attribute of the title, so that in RTL locales, a LTR 139 // We set the "dir" attribute of the title, so that in RTL locales, a LTR
(...skipping 17 matching lines...) Expand all
129 if (title.empty()) 157 if (title.empty())
130 title = base::UTF8ToUTF16(mv_item.url.spec()); 158 title = base::UTF8ToUTF16(mv_item.url.spec());
131 159
132 v8::Handle<v8::Object> obj = v8::Object::New(isolate); 160 v8::Handle<v8::Object> obj = v8::Object::New(isolate);
133 obj->Set(v8::String::NewFromUtf8(isolate, "renderViewId"), 161 obj->Set(v8::String::NewFromUtf8(isolate, "renderViewId"),
134 v8::Int32::New(isolate, render_view_id)); 162 v8::Int32::New(isolate, render_view_id));
135 obj->Set(v8::String::NewFromUtf8(isolate, "rid"), 163 obj->Set(v8::String::NewFromUtf8(isolate, "rid"),
136 v8::Int32::New(isolate, restricted_id)); 164 v8::Int32::New(isolate, restricted_id));
137 obj->Set(v8::String::NewFromUtf8(isolate, "thumbnailUrl"), 165 obj->Set(v8::String::NewFromUtf8(isolate, "thumbnailUrl"),
138 GenerateThumbnailURL(isolate, render_view_id, restricted_id)); 166 GenerateThumbnailURL(isolate, render_view_id, restricted_id));
167 if (IsIconNTPEnabled()) {
168 // Update website http://www.chromium.org/embeddedsearch when we make this
169 // permanent.
170 obj->Set(v8::String::NewFromUtf8(isolate, "largeIconUrl"),
171 GenerateLargeIconURL(isolate, render_view_id, restricted_id));
172 obj->Set(v8::String::NewFromUtf8(isolate, "fallbackIconUrl"),
173 GenerateFallbackIconURL(isolate, render_view_id, restricted_id));
174 }
139 obj->Set(v8::String::NewFromUtf8(isolate, "title"), 175 obj->Set(v8::String::NewFromUtf8(isolate, "title"),
140 UTF16ToV8String(isolate, title)); 176 UTF16ToV8String(isolate, title));
141 obj->Set(v8::String::NewFromUtf8(isolate, "domain"), 177 obj->Set(v8::String::NewFromUtf8(isolate, "domain"),
142 UTF8ToV8String(isolate, mv_item.url.host())); 178 UTF8ToV8String(isolate, mv_item.url.host()));
143 obj->Set(v8::String::NewFromUtf8(isolate, "direction"), 179 obj->Set(v8::String::NewFromUtf8(isolate, "direction"),
144 UTF8ToV8String(isolate, direction)); 180 UTF8ToV8String(isolate, direction));
145 obj->Set(v8::String::NewFromUtf8(isolate, "url"), 181 obj->Set(v8::String::NewFromUtf8(isolate, "url"),
146 UTF8ToV8String(isolate, mv_item.url.spec())); 182 UTF8ToV8String(isolate, mv_item.url.spec()));
147 return obj; 183 return obj;
148 } 184 }
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 if (!render_view) return; 1280 if (!render_view) return;
1245 1281
1246 bool display_instant_results = 1282 bool display_instant_results =
1247 SearchBox::Get(render_view)->display_instant_results(); 1283 SearchBox::Get(render_view)->display_instant_results();
1248 DVLOG(1) << render_view << " GetDisplayInstantResults" << 1284 DVLOG(1) << render_view << " GetDisplayInstantResults" <<
1249 display_instant_results; 1285 display_instant_results;
1250 args.GetReturnValue().Set(display_instant_results); 1286 args.GetReturnValue().Set(display_instant_results);
1251 } 1287 }
1252 1288
1253 } // namespace extensions_v8 1289 } // namespace extensions_v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698