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 5c2b8723b1f99fa7bec04581797b52bb1e97d3be..3c5cee72ee7827da01dc479508cc116676376e2f 100644 |
--- a/chrome/browser/resources/local_ntp/most_visited_util.js |
+++ b/chrome/browser/resources/local_ntp/most_visited_util.js |
@@ -45,7 +45,6 @@ var NTP_LOGGING_EVENT_TYPE = { |
NTP_MOUSEOVER: 9 |
}; |
- |
/** |
* Type of the impression provider for a generic client-provided suggestion. |
* @type {string} |
@@ -61,6 +60,12 @@ var CLIENT_PROVIDER_NAME = 'client'; |
var SERVER_PROVIDER_NAME = 'server'; |
/** |
+ * The origin of this request. |
+ * @const {string} |
+ */ |
+var DOMAIN_ORIGIN = '{{ORIGIN}}'; |
+ |
+/** |
* Parses query parameters from Location. |
* @param {string} location The URL to generate the CSS url for. |
* @return {Object} Dictionary containing name value pairs for URL. |
@@ -121,12 +126,19 @@ function createMostVisitedLink(params, href, title, text, provider) { |
// 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) { |
+ var isServerSuggestion = 'url' in params; |
+ |
+ // Ping are only populated for server-side suggestions, never for MV. |
+ if (isServerSuggestion && params.ping) { |
+ generatePing(DOMAIN_ORIGIN + params.ping); |
+ } |
+ |
var ntpApiHandle = chrome.embeddedSearch.newTabPage; |
if ('pos' in params && isFinite(params.pos)) { |
ntpApiHandle.logMostVisitedNavigation(parseInt(params.pos, 10), |
provider || ''); |
} |
- var isServerSuggestion = 'url' in params; |
+ |
if (!isServerSuggestion) { |
e.preventDefault(); |
ntpApiHandle.navigateContentWindow(href, getDispositionFromEvent(e)); |
@@ -175,7 +187,7 @@ function getMostVisitedStyles(params, isTitle) { |
* data to fill. |
*/ |
function fillMostVisited(location, fill) { |
- var params = parseQueryParams(document.location); |
+ var params = parseQueryParams(location); |
params.rid = parseInt(params.rid, 10); |
if (!isFinite(params.rid) && !params.url) |
return; |
@@ -212,3 +224,20 @@ function fillMostVisited(location, fill) { |
document.body.dir = data.direction; |
fill(params, data); |
} |
+ |
+ |
+/** |
+ * Sends a POST request to ping url. |
+ * @param {string} url URL to be pinged. |
+ */ |
+function generatePing(url) { |
+ if (navigator.sendBeacon) { |
+ navigator.sendBeacon(url); |
+ } else { |
+ // if sendBeacon is not enabled, we fallback for "a ping". |
+ var a = document.createElement('a'); |
+ a.href = '#'; |
+ a.ping = url; |
+ a.click(); |
+ } |
+} |