19ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 29ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 39ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// found in the LICENSE file. 49ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#ifndef CHROME_BROWSER_UI_WEBUI_NTP_NTP_USER_DATA_LOGGER_H_ 69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#define CHROME_BROWSER_UI_WEBUI_NTP_NTP_USER_DATA_LOGGER_H_ 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/web_contents_observer.h" 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/web_contents_user_data.h" 109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Helper class for logging data from the NTP. Attached to each NTP instance. 139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass NTPUserDataLogger 149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch : public content::WebContentsObserver, 159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch public content::WebContentsUserData<NTPUserDataLogger> { 169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch public: 179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual ~NTPUserDataLogger(); 189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Called each time the mouse hovers over a most visited tile or title. 209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch void increment_number_of_mouseovers(); 219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // To be set after initialization of this class. Used to determine whether a 239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // tab visibility change event or navigation event comes from the NTP. 249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch void set_ntp_url(const GURL& url) { 259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch ntp_url_ = url; 269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch } 279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch const GURL& ntp_url() const { return ntp_url_; } 299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Logs total number of mouseovers per NTP session to UMA histogram. Called 319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // when an NTP tab is about to be deactivated (be it by switching tabs, losing 329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // focus or closing the tab/shutting down Chrome), or when the user navigates 339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // to a URL. 349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch void EmitMouseoverCount(); 359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // content::WebContentsObserver override 379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual void NavigationEntryCommitted( 389ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch const content::LoadCommittedDetails& load_details) OVERRIDE; 399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch private: 419ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch explicit NTPUserDataLogger(content::WebContents* contents); 429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch friend class content::WebContentsUserData<NTPUserDataLogger>; 439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Total number of mouseovers for this NTP session. 459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch int number_of_mouseovers_; 469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // The URL of this New Tab Page - varies based on NTP version. 489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GURL ntp_url_; 499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch DISALLOW_COPY_AND_ASSIGN(NTPUserDataLogger); 519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}; 529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#endif // CHROME_BROWSER_UI_WEBUI_NTP_NTP_USER_DATA_LOGGER_H_ 54