Index: chrome/browser/history/top_sites_impl.h |
diff --git a/chrome/browser/history/top_sites_impl.h b/chrome/browser/history/top_sites_impl.h |
deleted file mode 100644 |
index 60e40b66c45fe1b093714569e26c73a0d53f4d08..0000000000000000000000000000000000000000 |
--- a/chrome/browser/history/top_sites_impl.h |
+++ /dev/null |
@@ -1,312 +0,0 @@ |
-// Copyright (c) 2013 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_HISTORY_TOP_SITES_IMPL_H_ |
-#define CHROME_BROWSER_HISTORY_TOP_SITES_IMPL_H_ |
- |
-#include <list> |
-#include <set> |
-#include <string> |
-#include <utility> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/callback.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/scoped_observer.h" |
-#include "base/synchronization/lock.h" |
-#include "base/task/cancelable_task_tracker.h" |
-#include "base/threading/thread_checker.h" |
-#include "base/time/time.h" |
-#include "base/timer/timer.h" |
-#include "components/history/core/browser/history_service.h" |
-#include "components/history/core/browser/history_service_observer.h" |
-#include "components/history/core/browser/history_types.h" |
-#include "components/history/core/browser/page_usage_data.h" |
-#include "components/history/core/browser/top_sites.h" |
-#include "components/history/core/browser/top_sites_backend.h" |
-#include "components/history/core/common/thumbnail_score.h" |
-#include "third_party/skia/include/core/SkColor.h" |
-#include "ui/gfx/image/image.h" |
-#include "url/gurl.h" |
- |
-class PrefService; |
- |
-namespace base { |
-class FilePath; |
-class RefCountedBytes; |
-class RefCountedMemory; |
-class SingleThreadTaskRunner; |
-} |
- |
-namespace history { |
- |
-class HistoryService; |
-class TopSitesCache; |
-class TopSitesImplTest; |
- |
-// This class allows requests for most visited urls and thumbnails on any |
-// thread. All other methods must be invoked on the UI thread. All mutations |
-// to internal state happen on the UI thread and are scheduled to update the |
-// db using TopSitesBackend. |
-class TopSitesImpl : public TopSites, public HistoryServiceObserver { |
- public: |
- TopSitesImpl(PrefService* pref_service, |
- HistoryService* history_service, |
- const char* blacklist_pref_name, |
- const PrepopulatedPageList& prepopulated_pages); |
- |
- // Initializes TopSitesImpl. |
- void Init(const base::FilePath& db_name, |
- const scoped_refptr<base::SingleThreadTaskRunner>& db_task_runner); |
- |
- // TopSites implementation. |
- bool SetPageThumbnail(const GURL& url, |
- const gfx::Image& thumbnail, |
- const ThumbnailScore& score) override; |
- bool SetPageThumbnailToJPEGBytes(const GURL& url, |
- const base::RefCountedMemory* memory, |
- const ThumbnailScore& score) override; |
- void GetMostVisitedURLs(const GetMostVisitedURLsCallback& callback, |
- bool include_forced_urls) override; |
- bool GetPageThumbnail(const GURL& url, |
- bool prefix_match, |
- scoped_refptr<base::RefCountedMemory>* bytes) override; |
- bool GetPageThumbnailScore(const GURL& url, ThumbnailScore* score) override; |
- bool GetTemporaryPageThumbnailScore(const GURL& url, |
- ThumbnailScore* score) override; |
- void SyncWithHistory() override; |
- bool HasBlacklistedItems() const override; |
- void AddBlacklistedURL(const GURL& url) override; |
- void RemoveBlacklistedURL(const GURL& url) override; |
- bool IsBlacklisted(const GURL& url) override; |
- void ClearBlacklistedURLs() override; |
- base::CancelableTaskTracker::TaskId StartQueryForMostVisited() override; |
- bool IsKnownURL(const GURL& url) override; |
- const std::string& GetCanonicalURLString(const GURL& url) const override; |
- bool IsNonForcedFull() override; |
- bool IsForcedFull() override; |
- PrepopulatedPageList GetPrepopulatedPages() override; |
- bool loaded() const override; |
- bool AddForcedURL(const GURL& url, const base::Time& time) override; |
- void OnNavigationCommitted(const GURL& url) override; |
- |
- // RefcountedKeyedService: |
- void ShutdownOnUIThread() override; |
- |
- protected: |
- ~TopSitesImpl() override; |
- |
- private: |
- // TODO(yiyaoliu): Remove the enums and related code when crbug/223430 is |
- // fixed. |
- // An enum representing different situations under which function |
- // SetTopSites can be initiated. |
- // This is needed because a histogram is used to record speed related metrics |
- // when SetTopSites are initiated from OnGotMostVisitedThumbnails, which |
- // usually happens early and might affect Chrome startup speed. |
- enum CallLocation { |
- // SetTopSites is called from function OnGotMostVisitedThumbnails. |
- CALL_LOCATION_FROM_ON_GOT_MOST_VISITED_THUMBNAILS, |
- // All other situations. |
- CALL_LOCATION_FROM_OTHER_PLACES |
- }; |
- |
- friend class TopSitesImplTest; |
- FRIEND_TEST_ALL_PREFIXES(TopSitesImplTest, DiffMostVisited); |
- FRIEND_TEST_ALL_PREFIXES(TopSitesImplTest, DiffMostVisitedWithForced); |
- |
- typedef base::Callback<void(const MostVisitedURLList&, |
- const MostVisitedURLList&)> PendingCallback; |
- |
- typedef std::pair<GURL, Images> TempImage; |
- typedef std::list<TempImage> TempImages; |
- typedef std::vector<PendingCallback> PendingCallbacks; |
- |
- // Generates the diff of things that happened between "old" and "new." |
- // |
- // This treats forced URLs separately than non-forced URLs. |
- // |
- // The URLs that are in "new" but not "old" will be have their index into |
- // "new" put in |added_urls|. The non-forced URLs that are in "old" but not |
- // "new" will have their index into "old" put into |deleted_urls|. |
- // |
- // URLs appearing in both old and new lists but having different indices will |
- // have their index into "new" be put into |moved_urls|. |
- static void DiffMostVisited(const MostVisitedURLList& old_list, |
- const MostVisitedURLList& new_list, |
- TopSitesDelta* delta); |
- |
- // Sets the thumbnail without writing to the database. Useful when |
- // reading last known top sites from the DB. |
- // Returns true if the thumbnail was set, false if the existing one is better. |
- bool SetPageThumbnailNoDB(const GURL& url, |
- const base::RefCountedMemory* thumbnail_data, |
- const ThumbnailScore& score); |
- |
- // A version of SetPageThumbnail that takes RefCountedBytes as |
- // returned by HistoryService. |
- bool SetPageThumbnailEncoded(const GURL& url, |
- const base::RefCountedMemory* thumbnail, |
- const ThumbnailScore& score); |
- |
- // Encodes the bitmap to bytes for storage to the db. Returns true if the |
- // bitmap was successfully encoded. |
- static bool EncodeBitmap(const gfx::Image& bitmap, |
- scoped_refptr<base::RefCountedBytes>* bytes); |
- |
- // Removes the cached thumbnail for url. Does nothing if |url| if not cached |
- // in |temp_images_|. |
- void RemoveTemporaryThumbnailByURL(const GURL& url); |
- |
- // Add a thumbnail for an unknown url. See temp_thumbnails_map_. |
- void AddTemporaryThumbnail(const GURL& url, |
- const base::RefCountedMemory* thumbnail, |
- const ThumbnailScore& score); |
- |
- // Called by our timer. Starts the query for the most visited sites. |
- void TimerFired(); |
- |
- // Finds the given URL in the redirect chain for the given TopSite, and |
- // returns the distance from the destination in hops that the given URL is. |
- // The URL is assumed to be in the list. The destination is 0. |
- static int GetRedirectDistanceForURL(const MostVisitedURL& most_visited, |
- const GURL& url); |
- |
- // Add prepopulated pages: 'welcome to Chrome' and themes gallery to |urls|. |
- // Returns true if any pages were added. |
- bool AddPrepopulatedPages(MostVisitedURLList* urls, |
- size_t num_forced_urls); |
- |
- // Add all the forced URLs from |cache_| into |new_list|, making sure not to |
- // add any URL that's already in |new_list|'s non-forced URLs. The forced URLs |
- // in |cache_| and |new_list| are assumed to appear at the front of the list |
- // and be sorted in increasing |last_forced_time|. This will still be true |
- // after the call. If the list of forced URLs overflows the older ones are |
- // dropped. Returns the number of forced URLs after the merge. |
- size_t MergeCachedForcedURLs(MostVisitedURLList* new_list); |
- |
- // Takes |urls|, produces it's copy in |out| after removing blacklisted URLs. |
- // Also ensures we respect the maximum number of forced URLs and non-forced |
- // URLs. |
- void ApplyBlacklist(const MostVisitedURLList& urls, MostVisitedURLList* out); |
- |
- // Returns an MD5 hash of the URL. Hashing is required for blacklisted URLs. |
- std::string GetURLHash(const GURL& url); |
- |
- // Returns the delay until the next update of history is needed. |
- // Uses num_urls_changed |
- base::TimeDelta GetUpdateDelay(); |
- |
- // Updates URLs in |cache_| and the db (in the background). |
- // The non-forced URLs in |new_top_sites| replace those in |cache_|. |
- // The forced URLs of |new_top_sites| are merged with those in |cache_|, |
- // if the list of forced URLs overflows, the oldest ones are dropped. |
- // All mutations to cache_ *must* go through this. Should |
- // be called from the UI thread. |
- void SetTopSites(const MostVisitedURLList& new_top_sites, |
- const CallLocation location); |
- |
- // Returns the number of most visited results to request from history. This |
- // changes depending upon how many urls have been blacklisted. Should be |
- // called from the UI thread. |
- int num_results_to_request_from_history() const; |
- |
- // Invoked when transitioning to LOADED. Notifies any queued up callbacks. |
- // Should be called from the UI thread. |
- void MoveStateToLoaded(); |
- |
- void ResetThreadSafeCache(); |
- |
- void ResetThreadSafeImageCache(); |
- |
- // Stops and starts timer with a delay of |delta|. |
- void RestartQueryForTopSitesTimer(base::TimeDelta delta); |
- |
- // Callback from TopSites with the top sites/thumbnails. Should be called |
- // from the UI thread. |
- void OnGotMostVisitedThumbnails( |
- const scoped_refptr<MostVisitedThumbnails>& thumbnails); |
- |
- // Called when history service returns a list of top URLs. |
- void OnTopSitesAvailableFromHistory(const MostVisitedURLList* data); |
- |
- // history::HistoryServiceObserver: |
- void OnURLsDeleted(HistoryService* history_service, |
- bool all_history, |
- bool expired, |
- const URLRows& deleted_rows, |
- const std::set<GURL>& favicon_urls) override; |
- |
- // Ensures that non thread-safe methods are called on the correct thread. |
- base::ThreadChecker thread_checker_; |
- |
- scoped_refptr<TopSitesBackend> backend_; |
- |
- // The top sites data. |
- scoped_ptr<TopSitesCache> cache_; |
- |
- // Copy of the top sites data that may be accessed on any thread (assuming |
- // you hold |lock_|). The data in |thread_safe_cache_| has blacklisted and |
- // pinned urls applied (|cache_| does not). |
- scoped_ptr<TopSitesCache> thread_safe_cache_; |
- |
- // Lock used to access |thread_safe_cache_|. |
- mutable base::Lock lock_; |
- |
- // Task tracker for history and backend requests. |
- base::CancelableTaskTracker cancelable_task_tracker_; |
- |
- // Timer that asks history for the top sites. This is used to make sure our |
- // data stays in sync with history. |
- base::OneShotTimer<TopSitesImpl> timer_; |
- |
- // The time we started |timer_| at. Only valid if |timer_| is running. |
- base::TimeTicks timer_start_time_; |
- |
- // The number of URLs changed on the last update. |
- size_t last_num_urls_changed_; |
- |
- // The pending requests for the top sites list. Can only be non-empty at |
- // startup. After we read the top sites from the DB, we'll always have a |
- // cached list and be able to run callbacks immediately. |
- PendingCallbacks pending_callbacks_; |
- |
- // Stores thumbnails for unknown pages. When SetPageThumbnail is |
- // called, if we don't know about that URL yet and we don't have |
- // enough Top Sites (new profile), we store it until the next |
- // SetNonForcedTopSites call. |
- TempImages temp_images_; |
- |
- // URL List of prepopulated page. |
- PrepopulatedPageList prepopulated_pages_; |
- |
- // PrefService holding the NTP URL blacklist dictionary. Must outlive |
- // TopSitesImpl. |
- PrefService* pref_service_; |
- |
- // Key for the NTP URL blacklist dictionary in PrefService. |
- const char* blacklist_pref_name_; |
- |
- // HistoryService that TopSitesImpl can query. May be null, but if defined it |
- // must outlive TopSitesImpl. |
- HistoryService* history_service_; |
- |
- // Are we loaded? |
- bool loaded_; |
- |
- // Have the SetTopSites execution time related histograms been recorded? |
- // The histogram should only be recorded once for each Chrome execution. |
- static bool histogram_recorded_; |
- |
- ScopedObserver<HistoryService, HistoryServiceObserver> |
- history_service_observer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TopSitesImpl); |
-}; |
- |
-} // namespace history |
- |
-#endif // CHROME_BROWSER_HISTORY_TOP_SITES_IMPL_H_ |