Home | History | Annotate | Download | only in search
      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