| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2014 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_UI_ZOOM_CHROME_ZOOM_LEVEL_PREFS_H_ | 
|  | 6 #define CHROME_BROWSER_UI_ZOOM_CHROME_ZOOM_LEVEL_PREFS_H_ | 
|  | 7 | 
|  | 8 #include "base/callback.h" | 
|  | 9 #include "base/files/file_path.h" | 
|  | 10 #include "base/macros.h" | 
|  | 11 #include "base/memory/ref_counted.h" | 
|  | 12 #include "base/observer_list.h" | 
|  | 13 #include "base/prefs/json_pref_store.h" | 
|  | 14 #include "base/prefs/pref_change_registrar.h" | 
|  | 15 #include "base/prefs/pref_service.h" | 
|  | 16 #include "base/prefs/pref_store.h" | 
|  | 17 #include "content/public/browser/host_zoom_map.h" | 
|  | 18 | 
|  | 19 namespace base { | 
|  | 20 class DictionaryValue; | 
|  | 21 } | 
|  | 22 | 
|  | 23 namespace chrome { | 
|  | 24 | 
|  | 25 // A class to manage per-partition default and per-host zoom levels in Chrome's | 
|  | 26 // preference system. It implements an interface between the content/ zoom | 
|  | 27 // levels in HostZoomMap and Chrome's preference system. All changes | 
|  | 28 // to the per-partition default zoom levels from chrome/ flow through this | 
|  | 29 // class. Any changes to per-host levels are updated when HostZoomMap calls | 
|  | 30 // OnZoomLevelChanged. | 
|  | 31 class ChromeZoomLevelPrefs { | 
|  | 32  public: | 
|  | 33   typedef base::CallbackList<void(void)>::Subscription | 
|  | 34       DefaultZoomLevelSubscription; | 
|  | 35 | 
|  | 36   // Initialize the pref_service and the profile_path via the constructor, | 
|  | 37   // as these concepts won't be available in the content base class | 
|  | 38   // (to be added later) which will define the InitPrefsAndCopyToHostZoomMap | 
|  | 39   // interface. |pref_service_| must outlive this class. | 
|  | 40   ChromeZoomLevelPrefs(PrefService* pref_service, | 
|  | 41                        const base::FilePath& profile_path); | 
|  | 42   virtual ~ChromeZoomLevelPrefs(); | 
|  | 43 | 
|  | 44   static std::string GetHashForTesting(const base::FilePath& relative_path); | 
|  | 45 | 
|  | 46   virtual void InitPrefsAndCopyToHostZoomMap( | 
|  | 47       const base::FilePath& partition_path, | 
|  | 48       content::HostZoomMap* host_zoom_map); | 
|  | 49 | 
|  | 50   void SetDefaultZoomLevelPref(double level); | 
|  | 51   double GetDefaultZoomLevelPref() const; | 
|  | 52   scoped_ptr<DefaultZoomLevelSubscription> RegisterDefaultZoomLevelCallback( | 
|  | 53       const base::Closure& callback); | 
|  | 54 | 
|  | 55   void ExtractPerHostZoomLevels( | 
|  | 56       const base::DictionaryValue* host_zoom_dictionary); | 
|  | 57 | 
|  | 58  private: | 
|  | 59   // This is a callback function that receives notifications from HostZoomMap | 
|  | 60   // when per-host zoom levels change. It is used to update the per-host | 
|  | 61   // zoom levels (if any) managed by this class (for its associated partition). | 
|  | 62   void OnZoomLevelChanged(const content::HostZoomMap::ZoomLevelChange& change); | 
|  | 63 | 
|  | 64   PrefService* pref_service_; | 
|  | 65   const base::FilePath profile_path_; | 
|  | 66   content::HostZoomMap* host_zoom_map_; | 
|  | 67   scoped_ptr<content::HostZoomMap::Subscription> zoom_subscription_; | 
|  | 68   std::string partition_key_; | 
|  | 69   base::CallbackList<void(void)> default_zoom_changed_callbacks_; | 
|  | 70 | 
|  | 71   DISALLOW_COPY_AND_ASSIGN(ChromeZoomLevelPrefs); | 
|  | 72 }; | 
|  | 73 | 
|  | 74 }  // namespace chrome | 
|  | 75 | 
|  | 76 #endif  // CHROME_BROWSER_UI_ZOOM_CHROME_ZOOM_LEVEL_PREFS_H_ | 
| OLD | NEW | 
|---|