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

Unified Diff: chrome/browser/resources/local_ntp/most_visited_util.js

Issue 178253008: Redoing Issue 36073011: Allowing file:/// in Instant Extended's Most Visited links. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unused consts. Created 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/local_ntp/most_visited_util.js
diff --git a/chrome/browser/resources/local_ntp/most_visited_util.js b/chrome/browser/resources/local_ntp/most_visited_util.js
index 0ee0c11eb6665ba1df1de0a9833a384df1306df1..cf6b7ffa498fc4e85c4713f53419768c622bfdfe 100644
--- a/chrome/browser/resources/local_ntp/most_visited_util.js
+++ b/chrome/browser/resources/local_ntp/most_visited_util.js
@@ -8,6 +8,8 @@
*/
<include src="instant_iframe_validation.js">
+<include src="window_disposition_util.js">
+
/**
* The different types of events that are logged from the NTP. This enum is
@@ -43,6 +45,7 @@ var NTP_LOGGING_EVENT_TYPE = {
NTP_MOUSEOVER: 9
};
+
/**
* Type of the impression provider for a generic client-provided suggestion.
* @type {string}
@@ -88,36 +91,20 @@ function parseQueryParams(location) {
* @param {string} href The destination for the link.
* @param {string} title The title for the link.
* @param {string|undefined} text The text for the link or none.
- * @param {string|undefined} ping If specified, a location relative to the
- * referrer of this iframe, to ping when the link is clicked. Only works if
- * the referrer is HTTPS.
* @param {string|undefined} provider A provider name (max 8 alphanumeric
* characters) used for logging. Undefined if suggestion is not coming from
* the server.
* @return {HTMLAnchorElement} A new link element.
*/
-function createMostVisitedLink(params, href, title, text, ping, provider) {
+function createMostVisitedLink(params, href, title, text, provider) {
var styles = getMostVisitedStyles(params, !!text);
var link = document.createElement('a');
link.style.color = styles.color;
link.style.fontSize = styles.fontSize + 'px';
if (styles.fontFamily)
link.style.fontFamily = styles.fontFamily;
+
link.href = href;
- if ('pos' in params && isFinite(params.pos)) {
- link.ping = '/log.html?pos=' + params.pos;
- if (provider)
- link.ping += '&pr=' + provider;
- // If a ping parameter was specified, add it to the list of pings, relative
- // to the referrer of this iframe, which is the default search provider.
- if (ping) {
- var parentUrl = document.createElement('a');
- parentUrl.href = document.referrer;
- if (parentUrl.protocol == 'https:') {
- link.ping += ' ' + parentUrl.origin + '/' + ping;
- }
- }
- }
link.title = title;
link.target = '_top';
// Exclude links from the tab order. The tabIndex is added to the thumbnail
@@ -129,6 +116,20 @@ function createMostVisitedLink(params, href, title, text, ping, provider) {
var ntpApiHandle = chrome.embeddedSearch.newTabPage;
ntpApiHandle.logEvent(NTP_LOGGING_EVENT_TYPE.NTP_MOUSEOVER);
});
+
+ // Webkit's security policy prevents some Most Visited thumbnails from
+ // working (those with schemes different from http and https). Therefore,
+ // navigateContentWindow is being used in order to get all schemes working.
+ link.addEventListener('click', function handleNavigation(e) {
+ e.preventDefault();
+ var ntpApiHandle = chrome.embeddedSearch.newTabPage;
+ if ('pos' in params && isFinite(params.pos)) {
+ ntpApiHandle.logMostVisitedNavigation(parseInt(params.pos, 10),
+ provider || '');
+ }
+ ntpApiHandle.navigateContentWindow(href, getDispositionFromEvent(e));
+ });
+
return link;
}
@@ -186,7 +187,6 @@ function fillMostVisited(location, fill) {
data.title = params.ti || '';
data.direction = params.di || '';
data.domain = params.dom || '';
- data.ping = params.ping || '';
data.provider = params.pr || SERVER_PROVIDER_NAME;
// Log the fact that suggestion was obtained from the server.
@@ -199,7 +199,6 @@ function fillMostVisited(location, fill) {
return;
// Allow server-side provider override.
data.provider = params.pr || CLIENT_PROVIDER_NAME;
- delete data.ping;
}
if (/^javascript:/i.test(data.url) ||
/^javascript:/i.test(data.thumbnailUrl) ||

Powered by Google App Engine
This is Rietveld 408576698