| OLD | NEW | 
| (Empty) |  | 
 |   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 COMPONENTS_PRECACHE_CONTENT_PRECACHE_MANAGER_H_ | 
 |   6 #define COMPONENTS_PRECACHE_CONTENT_PRECACHE_MANAGER_H_ | 
 |   7  | 
 |   8 #include <list> | 
 |   9  | 
 |  10 #include "base/memory/ref_counted.h" | 
 |  11 #include "base/memory/scoped_ptr.h" | 
 |  12 #include "base/synchronization/lock.h" | 
 |  13 #include "components/browser_context_keyed_service/browser_context_keyed_service
    .h" | 
 |  14 #include "components/precache/core/precache_fetcher.h" | 
 |  15 #include "url/gurl.h" | 
 |  16  | 
 |  17 namespace content { | 
 |  18 class BrowserContext; | 
 |  19 } | 
 |  20  | 
 |  21 namespace precache { | 
 |  22  | 
 |  23 class PrecacheDatabase; | 
 |  24 class URLListProvider; | 
 |  25  | 
 |  26 // Class that manages all precaching-related activities. Owned by the | 
 |  27 // BrowserContext that it is constructed for. Use | 
 |  28 // PrecacheManagerFactory::GetForBrowserContext to get an instance of this | 
 |  29 // class. | 
 |  30 // TODO(sclittle): Delete precache history when browsing history is deleted. | 
 |  31 class PrecacheManager : public BrowserContextKeyedService, | 
 |  32                         PrecacheFetcher::PrecacheDelegate { | 
 |  33  public: | 
 |  34   explicit PrecacheManager(content::BrowserContext* browser_context); | 
 |  35   virtual ~PrecacheManager(); | 
 |  36  | 
 |  37   // Returns true if precaching is enabled by either Finch or the command line | 
 |  38   // flag. | 
 |  39   static bool IsPrecachingEnabled(); | 
 |  40  | 
 |  41   // From BrowserContextKeyedService. | 
 |  42   virtual void Shutdown() OVERRIDE; | 
 |  43  | 
 |  44   // From PrecacheFetcher::PrecacheDelegate. | 
 |  45   virtual void OnDone() OVERRIDE; | 
 |  46  | 
 |  47   // Starts precaching resources that the user is predicted to fetch in the | 
 |  48   // future. If precaching is already currently in progress, then this method | 
 |  49   // does nothing. Must be called on the UI thread. | 
 |  50   void StartPrecaching(URLListProvider* url_list_provider); | 
 |  51  | 
 |  52   // Cancels precaching if it is in progress. Must be called on the UI thread. | 
 |  53   void CancelPrecaching(); | 
 |  54  | 
 |  55   // Returns true if precaching is currently in progress, or false otherwise. | 
 |  56   // May be called from any thread. | 
 |  57   bool IsPrecaching(); | 
 |  58  | 
 |  59   // Returns the PrecacheDatabase used for tracking precache metrics. This | 
 |  60   // method can be called on any thread, but methods on the PrecacheDatabase | 
 |  61   // should only be used on the DB thread. | 
 |  62   scoped_refptr<PrecacheDatabase> precache_database(); | 
 |  63  | 
 |  64  private: | 
 |  65   void OnURLsReceived(const std::list<GURL>& urls); | 
 |  66  | 
 |  67   // The browser context that owns this PrecacheManager. | 
 |  68   content::BrowserContext* browser_context_; | 
 |  69  | 
 |  70   // The PrecacheFetcher used to precache resources. Should only be used on the | 
 |  71   // UI thread. | 
 |  72   scoped_ptr<PrecacheFetcher> precache_fetcher_; | 
 |  73  | 
 |  74   // The PrecacheDatabase for tracking precache metrics. Should only be used on | 
 |  75   // the DB thread. | 
 |  76   scoped_refptr<PrecacheDatabase> precache_database_; | 
 |  77  | 
 |  78   // Flag indicating whether or not precaching is currently in progress. | 
 |  79   bool is_precaching_; | 
 |  80  | 
 |  81   // Lock for |is_precaching_|. | 
 |  82   base::Lock lock_; | 
 |  83  | 
 |  84   DISALLOW_COPY_AND_ASSIGN(PrecacheManager); | 
 |  85 }; | 
 |  86  | 
 |  87 }  // namespace precache | 
 |  88  | 
 |  89 #endif  // COMPONENTS_PRECACHE_CONTENT_PRECACHE_MANAGER_H_ | 
| OLD | NEW |