blob: 22f58e383a599185ad8ac41df6f179260efd5ead [file] [log] [blame]
[email protected]32c3c752012-01-05 17:33:471// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]9ce7cb42011-12-07 18:53:072// 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_PREFS_PREFS_TAB_HELPER_H_
6#define CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_
[email protected]9ce7cb42011-12-07 18:53:077
[email protected]2a7cac02013-09-26 19:20:188#include "base/callback_list.h"
[email protected]be36dcf2012-05-22 07:04:009#include "base/compiler_specific.h"
avi655876a2015-12-25 07:18:1510#include "base/macros.h"
[email protected]124593ce2013-08-20 01:42:2311#include "base/memory/weak_ptr.h"
Brett Wilson21cf626a2017-09-07 00:30:2012#include "chrome/browser/font_pref_change_notifier.h"
[email protected]71fde352011-12-29 03:29:5613#include "content/public/browser/notification_observer.h"
[email protected]9ce7cb42011-12-07 18:53:0714#include "content/public/browser/notification_registrar.h"
[email protected]46b3c982012-10-09 18:38:3015#include "content/public/browser/web_contents_user_data.h"
[email protected]9ce7cb42011-12-07 18:53:0716
mcnee336ea2c2017-05-23 22:50:5917#if !defined(OS_ANDROID)
18#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
19#endif
20
[email protected]ea6ad01a2011-12-21 21:53:4921class Profile;
[email protected]9ce7cb42011-12-07 18:53:0722
[email protected]d0aa78d2012-03-26 07:55:0223namespace content {
24class WebContents;
25}
26
[email protected]443e9312013-05-06 06:17:3427namespace user_prefs {
28class PrefRegistrySyncable;
29}
30
[email protected]9ce7cb42011-12-07 18:53:0731// Per-tab class to handle user preferences.
[email protected]bbf1925a2012-10-03 16:39:2232class PrefsTabHelper : public content::NotificationObserver,
[email protected]46b3c982012-10-09 18:38:3033 public content::WebContentsUserData<PrefsTabHelper> {
[email protected]9ce7cb42011-12-07 18:53:0734 public:
dcheng5dd5ff62014-10-21 12:42:3835 ~PrefsTabHelper() override;
[email protected]9ce7cb42011-12-07 18:53:0736
[email protected]37ca3fe02013-07-05 15:32:4437 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
jamd9bb3b7802015-01-28 20:32:1638 static void GetServiceInstance();
[email protected]9ce7cb42011-12-07 18:53:0739
[email protected]9ce7cb42011-12-07 18:53:0740 protected:
41 // Update the RenderView's WebPreferences. Exposed as protected for testing.
42 virtual void UpdateWebPreferences();
43
[email protected]9ce7cb42011-12-07 18:53:0744 private:
[email protected]bbf1925a2012-10-03 16:39:2245 explicit PrefsTabHelper(content::WebContents* contents);
[email protected]46b3c982012-10-09 18:38:3046 friend class content::WebContentsUserData<PrefsTabHelper>;
jamd9bb3b7802015-01-28 20:32:1647 friend class PrefWatcher;
[email protected]bbf1925a2012-10-03 16:39:2248
[email protected]9ce7cb42011-12-07 18:53:0749 // content::NotificationObserver overrides:
dcheng5dd5ff62014-10-21 12:42:3850 void Observe(int type,
51 const content::NotificationSource& source,
52 const content::NotificationDetails& details) override;
[email protected]9ce7cb42011-12-07 18:53:0753
[email protected]3dfa7f3c2012-04-18 18:01:3254 // Update the WebContents's RendererPreferences.
[email protected]9ce7cb42011-12-07 18:53:0755 void UpdateRendererPreferences();
56
[email protected]9e797d22014-08-08 21:31:3057 void OnFontFamilyPrefChanged(const std::string& pref_name);
[email protected]be85e7d2012-10-31 08:34:2058 void OnWebPrefChanged(const std::string& pref_name);
[email protected]ea6ad01a2011-12-21 21:53:4959
kulshin2510d5d2016-10-10 21:04:3260 void NotifyWebkitPreferencesChanged(const std::string& pref_name);
61
[email protected]d0aa78d2012-03-26 07:55:0262 content::WebContents* web_contents_;
jamd9bb3b7802015-01-28 20:32:1663 Profile* profile_;
[email protected]9ce7cb42011-12-07 18:53:0764 content::NotificationRegistrar registrar_;
dcheng9603ab92016-04-08 04:17:3265 std::unique_ptr<base::CallbackList<void(void)>::Subscription>
[email protected]64aaec552013-09-12 17:26:3866 style_sheet_subscription_;
mcnee336ea2c2017-05-23 22:50:5967#if !defined(OS_ANDROID)
dcheng9603ab92016-04-08 04:17:3268 std::unique_ptr<ChromeZoomLevelPrefs::DefaultZoomLevelSubscription>
wjmacleane530aa742014-10-14 21:43:3069 default_zoom_level_subscription_;
Brett Wilson21cf626a2017-09-07 00:30:2070 FontPrefChangeNotifier::Registrar font_change_registrar_;
mcnee336ea2c2017-05-23 22:50:5971#endif // !defined(OS_ANDROID)
[email protected]07f0f2cf2013-10-09 03:43:1872 base::WeakPtrFactory<PrefsTabHelper> weak_ptr_factory_;
[email protected]9ce7cb42011-12-07 18:53:0773
74 DISALLOW_COPY_AND_ASSIGN(PrefsTabHelper);
75};
76
77#endif // CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_