| Index: chrome/browser/ui/webui/ntp/most_visited_handler.h
 | 
| diff --git a/chrome/browser/ui/webui/ntp/most_visited_handler.h b/chrome/browser/ui/webui/ntp/most_visited_handler.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..7e04d42aeaa10d8c15397169c2cde1317cd1e552
 | 
| --- /dev/null
 | 
| +++ b/chrome/browser/ui/webui/ntp/most_visited_handler.h
 | 
| @@ -0,0 +1,120 @@
 | 
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#ifndef CHROME_BROWSER_UI_WEBUI_NTP_MOST_VISITED_HANDLER_H_
 | 
| +#define CHROME_BROWSER_UI_WEBUI_NTP_MOST_VISITED_HANDLER_H_
 | 
| +
 | 
| +#include <string>
 | 
| +#include <vector>
 | 
| +
 | 
| +#include "base/memory/weak_ptr.h"
 | 
| +#include "base/scoped_observer.h"
 | 
| +#include "components/history/core/browser/history_types.h"
 | 
| +#include "components/history/core/browser/top_sites_observer.h"
 | 
| +#include "content/public/browser/web_ui_message_handler.h"
 | 
| +
 | 
| +class GURL;
 | 
| +
 | 
| +namespace base {
 | 
| +class ListValue;
 | 
| +class Value;
 | 
| +}
 | 
| +
 | 
| +namespace user_prefs {
 | 
| +class PrefRegistrySyncable;
 | 
| +}
 | 
| +
 | 
| +// The handler for Javascript messages related to the "most visited" view.
 | 
| +//
 | 
| +// This class manages one preference:
 | 
| +// - The URL blacklist: URLs we do not want to show in the thumbnails list.  It
 | 
| +//   is a dictionary for quick access (it associates a dummy boolean to the URL
 | 
| +//   string).
 | 
| +class MostVisitedHandler : public content::WebUIMessageHandler,
 | 
| +                           public history::TopSitesObserver {
 | 
| + public:
 | 
| +
 | 
| +  MostVisitedHandler();
 | 
| +  ~MostVisitedHandler() override;
 | 
| +
 | 
| +  // WebUIMessageHandler override and implementation.
 | 
| +  void RegisterMessages() override;
 | 
| +
 | 
| +  // Callback for the "getMostVisited" message.
 | 
| +  void HandleGetMostVisited(const base::ListValue* args);
 | 
| +
 | 
| +  // Callback for the "blacklistURLFromMostVisited" message.
 | 
| +  void HandleBlacklistUrl(const base::ListValue* args);
 | 
| +
 | 
| +  // Callback for the "removeURLsFromMostVisitedBlacklist" message.
 | 
| +  void HandleRemoveUrlsFromBlacklist(const base::ListValue* args);
 | 
| +
 | 
| +  // Callback for the "clearMostVisitedURLsBlacklist" message.
 | 
| +  void HandleClearBlacklist(const base::ListValue* args);
 | 
| +
 | 
| +  // Callback for the "mostVisitedAction" message.
 | 
| +  void HandleMostVisitedAction(const base::ListValue* args);
 | 
| +
 | 
| +  // Callback for the "mostVisitedSelected" message.
 | 
| +  void HandleMostVisitedSelected(const base::ListValue* args);
 | 
| +
 | 
| +  const std::vector<GURL>& most_visited_urls() const {
 | 
| +    return most_visited_urls_;
 | 
| +  }
 | 
| +
 | 
| +  static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
 | 
| +
 | 
| + private:
 | 
| +  struct MostVisitedPage;
 | 
| +
 | 
| +  // Send a request to the HistoryService to get the most visited pages.
 | 
| +  void StartQueryForMostVisited();
 | 
| +
 | 
| +  // Sets pages_value_ from a format produced by TopSites.
 | 
| +  void SetPagesValueFromTopSites(const history::MostVisitedURLList& data);
 | 
| +
 | 
| +  // Callback for TopSites.
 | 
| +  void OnMostVisitedUrlsAvailable(const history::MostVisitedURLList& data);
 | 
| +
 | 
| +  // Puts the passed URL in the blacklist (so it does not show as a thumbnail).
 | 
| +  void BlacklistUrl(const GURL& url);
 | 
| +
 | 
| +  // Returns the key used in url_blacklist_ for the passed |url|.
 | 
| +  std::string GetDictionaryKeyForUrl(const std::string& url);
 | 
| +
 | 
| +  // Sends pages_value_ to the javascript side and resets page_value_.
 | 
| +  void SendPagesValue();
 | 
| +
 | 
| +  // history::TopSitesObserver implementation.
 | 
| +  void TopSitesLoaded(history::TopSites* top_sites) override;
 | 
| +  void TopSitesChanged(history::TopSites* top_sites) override;
 | 
| +
 | 
| +  // Scoped observer to help with TopSitesObserver registration.
 | 
| +  ScopedObserver<history::TopSites, history::TopSitesObserver> scoped_observer_;
 | 
| +
 | 
| +  // The most visited URLs, in priority order.
 | 
| +  // Only used for matching up clicks on the page to which most visited entry
 | 
| +  // was clicked on for metrics purposes.
 | 
| +  std::vector<GURL> most_visited_urls_;
 | 
| +
 | 
| +  // We pre-fetch the first set of result pages.  This variable is false until
 | 
| +  // we get the first getMostVisited() call.
 | 
| +  bool got_first_most_visited_request_;
 | 
| +
 | 
| +  // Keep the results of the db query here.
 | 
| +  scoped_ptr<base::ListValue> pages_value_;
 | 
| +
 | 
| +  // Whether the user has viewed the 'most visited' pane.
 | 
| +  bool most_visited_viewed_;
 | 
| +
 | 
| +  // Whether the user has performed a "tracked" action to leave the page or not.
 | 
| +  bool user_action_logged_;
 | 
| +
 | 
| +  // For callbacks which may be run after destruction.
 | 
| +  base::WeakPtrFactory<MostVisitedHandler> weak_ptr_factory_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(MostVisitedHandler);
 | 
| +};
 | 
| +
 | 
| +#endif  // CHROME_BROWSER_UI_WEBUI_NTP_MOST_VISITED_HANDLER_H_
 | 
| 
 |