diff options
author | huangs <huangs@chromium.org> | 2015-04-23 13:58:38 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-23 20:58:49 +0000 |
commit | ec03fb7c5f7b128e29ef1b33b0a3c0241ae96f2c (patch) | |
tree | 1ab8ee6a8a73027a9fba7bfc67dcada210b9c4e9 /chrome/renderer | |
parent | 833437df7079a8a1670c5bff5f93e40e8b238ea0 (diff) | |
download | chromium_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.js | 29 | ||||
-rw-r--r-- | chrome/renderer/searchbox/searchbox_extension.cc | 28 |
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)); |