1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SEARCH_MOST_VISITED_IFRAME_SOURCE_H_ 6 #define CHROME_BROWSER_SEARCH_MOST_VISITED_IFRAME_SOURCE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "base/gtest_prod_util.h" 11 #include "chrome/browser/search/iframe_source.h" 12 13 // Serves HTML for displaying suggestions using iframes, e.g. 14 // chrome-search://suggestion/loader.html 15 class MostVisitedIframeSource : public IframeSource { 16 public: 17 MostVisitedIframeSource(); 18 virtual ~MostVisitedIframeSource(); 19 20 // Number of Most Visited elements on the NTP for logging purposes. 21 static const int kNumMostVisited; 22 // Name of the histogram keeping track of Most Visited clicks. 23 static const char kMostVisitedHistogramName[]; 24 25 // Overridden from IframeSource. Public for testing. 26 virtual void StartDataRequest( 27 const std::string& path_and_query, 28 int render_process_id, 29 int render_view_id, 30 const content::URLDataSource::GotDataCallback& callback) OVERRIDE; 31 32 protected: 33 // Overridden from IframeSource: 34 virtual std::string GetSource() const OVERRIDE; 35 36 virtual bool ServesPath(const std::string& path) const OVERRIDE; 37 38 private: 39 FRIEND_TEST_ALL_PREFIXES(MostVisitedIframeSourceTest, 40 LogEndpointIsValidWithProvider); 41 42 // Logs the click on a Most Visited tile for a specific |provider|. Note that 43 // the UMA_HISTOGRAM_ENUMERATION macro cannot be used since it caches the 44 // histogram object at the call site, which will not work in this case. 45 void LogMostVisitedProviderClick(int position, const std::string& provider); 46 47 // Returns the name of the histogram that should be logged for a click to a 48 // specified Most Visited |provider|. 49 static std::string GetHistogramNameForProvider(const std::string& provider); 50 51 DISALLOW_COPY_AND_ASSIGN(MostVisitedIframeSource); 52 }; 53 54 #endif // CHROME_BROWSER_SEARCH_MOST_VISITED_IFRAME_SOURCE_H_ 55