summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorhuangs <huangs@chromium.org>2015-04-23 13:58:38 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-23 20:58:49 +0000
commitec03fb7c5f7b128e29ef1b33b0a3c0241ae96f2c (patch)
tree1ab8ee6a8a73027a9fba7bfc67dcada210b9c4e9 /chrome/renderer
parent833437df7079a8a1670c5bff5f93e40e8b238ea0 (diff)
downloadchromium_src-ec03fb7c5f7b128e29ef1b33b0a3c0241ae96f2c.zip
chromium_src-ec03fb7c5f7b128e29ef1b33b0a3c0241ae96f2c.tar.gz
chromium_src-ec03fb7c5f7b128e29ef1b33b0a3c0241ae96f2c.tar.bz2
[Icons NTP] Make local NTP large icons URL match device resolution.
For chrome.embeddedSearch.searchBox.getMostVisitedItemData(rid), the largeIconUrl and fallbackIconUrl items now requests icon sizes depending on window.devicePixelWidth, rather than the fixed 96. The task has to be split between C++ and JS code due to data availability. BUG=479774 Review URL: https://codereview.chromium.org/1101663004 Cr-Commit-Position: refs/heads/master@{#326640}
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/resources/extensions/searchbox_api.js29
-rw-r--r--chrome/renderer/searchbox/searchbox_extension.cc28
2 files changed, 28 insertions, 29 deletions
diff --git a/chrome/renderer/resources/extensions/searchbox_api.js b/chrome/renderer/resources/extensions/searchbox_api.js
index a158ac4..f6e5b3e 100644
--- a/chrome/renderer/resources/extensions/searchbox_api.js
+++ b/chrome/renderer/resources/extensions/searchbox_api.js
@@ -48,7 +48,21 @@ if (!chrome.embeddedSearch) {
// This method is restricted to chrome-search://most-visited pages by
// checking the invoking context's origin in searchbox_extension.cc.
this.getMostVisitedItemData = function(restrictedId) {
- return GetMostVisitedItemData(restrictedId);
+ var item = GetMostVisitedItemData(restrictedId);
+ if (item) {
+ var sizeInPx = Math.floor(48 * window.devicePixelRatio + 0.5);
+ // Populate large icon and fallback icon data, if they exist. We'll
+ // render everything here, once these become available by default.
+ if (item.largeIconUrl) {
+ item.largeIconUrl +=
+ sizeInPx + "/" + item.renderViewId + "/" + item.rid;
+ }
+ if (item.fallbackIconUrl) {
+ item.fallbackIconUrl +=
+ sizeInPx + ",,,,/" + item.renderViewId + "/" + item.rid;
+ }
+ }
+ return item;
};
this.paste = function(value) {
@@ -102,13 +116,16 @@ if (!chrome.embeddedSearch) {
var mostVisitedItems = GetMostVisitedItems();
for (var i = 0, item; item = mostVisitedItems[i]; ++i) {
item.faviconUrl = GenerateFaviconURL(item.renderViewId, item.rid);
+
// These properties are private data and should not be returned to
// the page. They are only accessible via getMostVisitedItemData().
- item.url = null;
- item.title = null;
- item.domain = null;
- item.direction = null;
- item.renderViewId = null;
+ delete item.url;
+ delete item.title;
+ delete item.domain;
+ delete item.direction;
+ delete item.renderViewId;
+ delete item.largeIconUrl;
+ delete item.fallbackIconUrl;
}
return mostVisitedItems;
}
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
index c9e69b3..727ed9c 100644
--- a/chrome/renderer/searchbox/searchbox_extension.cc
+++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -117,27 +117,6 @@ 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
@@ -178,10 +157,13 @@ v8::Handle<v8::Object> GenerateMostVisitedItem(
if (IsIconNTPEnabled()) {
// Update website http://www.chromium.org/embeddedsearch when we make this
// permanent.
+ // Large icon size is 48px * window.devicePixelRatio. This is easier to set
+ // from JS, where IsIconNTPEnabled() is not available. So we add stubs
+ // here, and let JS fill in details.
obj->Set(v8::String::NewFromUtf8(isolate, "largeIconUrl"),
- GenerateLargeIconURL(isolate, render_view_id, restricted_id));
+ v8::String::NewFromUtf8(isolate, "chrome-search://large-icon/"));
obj->Set(v8::String::NewFromUtf8(isolate, "fallbackIconUrl"),
- GenerateFallbackIconURL(isolate, render_view_id, restricted_id));
+ v8::String::NewFromUtf8(isolate, "chrome-search://fallback-icon/"));
}
obj->Set(v8::String::NewFromUtf8(isolate, "title"),
UTF16ToV8String(isolate, title));