[email protected] | 32c3c75 | 2012-01-05 17:33:47 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 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_PREFS_PREFS_TAB_HELPER_H_ | ||||
6 | #define CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_ | ||||
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 7 | |
[email protected] | be36dcf | 2012-05-22 07:04:00 | [diff] [blame] | 8 | #include "base/compiler_specific.h" |
avi | 655876a | 2015-12-25 07:18:15 | [diff] [blame] | 9 | #include "base/macros.h" |
[email protected] | 124593ce | 2013-08-20 01:42:23 | [diff] [blame] | 10 | #include "base/memory/weak_ptr.h" |
Brett Wilson | 21cf626a | 2017-09-07 00:30:20 | [diff] [blame] | 11 | #include "chrome/browser/font_pref_change_notifier.h" |
[email protected] | 71fde35 | 2011-12-29 03:29:56 | [diff] [blame] | 12 | #include "content/public/browser/notification_observer.h" |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 13 | #include "content/public/browser/notification_registrar.h" |
[email protected] | 46b3c98 | 2012-10-09 18:38:30 | [diff] [blame] | 14 | #include "content/public/browser/web_contents_user_data.h" |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 15 | |
mcnee | 336ea2c | 2017-05-23 22:50:59 | [diff] [blame] | 16 | #if !defined(OS_ANDROID) |
17 | #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h" | ||||
18 | #endif | ||||
19 | |||||
[email protected] | ea6ad01a | 2011-12-21 21:53:49 | [diff] [blame] | 20 | class Profile; |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 21 | |
[email protected] | d0aa78d | 2012-03-26 07:55:02 | [diff] [blame] | 22 | namespace content { |
23 | class WebContents; | ||||
24 | } | ||||
25 | |||||
[email protected] | 443e931 | 2013-05-06 06:17:34 | [diff] [blame] | 26 | namespace user_prefs { |
27 | class PrefRegistrySyncable; | ||||
28 | } | ||||
29 | |||||
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 30 | // Per-tab class to handle user preferences. |
[email protected] | bbf1925a | 2012-10-03 16:39:22 | [diff] [blame] | 31 | class PrefsTabHelper : public content::NotificationObserver, |
[email protected] | 46b3c98 | 2012-10-09 18:38:30 | [diff] [blame] | 32 | public content::WebContentsUserData<PrefsTabHelper> { |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 33 | public: |
dcheng | 5dd5ff6 | 2014-10-21 12:42:38 | [diff] [blame] | 34 | ~PrefsTabHelper() override; |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 35 | |
Xi Han | 25a7f03 | 2019-04-18 21:44:21 | [diff] [blame] | 36 | static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, |
37 | const std::string& locale); | ||||
jam | d9bb3b780 | 2015-01-28 20:32:16 | [diff] [blame] | 38 | static void GetServiceInstance(); |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 39 | |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 40 | protected: |
41 | // Update the RenderView's WebPreferences. Exposed as protected for testing. | ||||
42 | virtual void UpdateWebPreferences(); | ||||
43 | |||||
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 44 | private: |
[email protected] | bbf1925a | 2012-10-03 16:39:22 | [diff] [blame] | 45 | explicit PrefsTabHelper(content::WebContents* contents); |
[email protected] | 46b3c98 | 2012-10-09 18:38:30 | [diff] [blame] | 46 | friend class content::WebContentsUserData<PrefsTabHelper>; |
jam | d9bb3b780 | 2015-01-28 20:32:16 | [diff] [blame] | 47 | friend class PrefWatcher; |
[email protected] | bbf1925a | 2012-10-03 16:39:22 | [diff] [blame] | 48 | |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 49 | // content::NotificationObserver overrides: |
dcheng | 5dd5ff6 | 2014-10-21 12:42:38 | [diff] [blame] | 50 | void Observe(int type, |
51 | const content::NotificationSource& source, | ||||
52 | const content::NotificationDetails& details) override; | ||||
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 53 | |
Mario Sanchez Prada | 0bd8b8c | 2020-10-21 17:49:23 | [diff] [blame] | 54 | // Update the WebContents's blink::RendererPreferences. |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 55 | void UpdateRendererPreferences(); |
56 | |||||
[email protected] | 9e797d2 | 2014-08-08 21:31:30 | [diff] [blame] | 57 | void OnFontFamilyPrefChanged(const std::string& pref_name); |
[email protected] | be85e7d | 2012-10-31 08:34:20 | [diff] [blame] | 58 | void OnWebPrefChanged(const std::string& pref_name); |
[email protected] | ea6ad01a | 2011-12-21 21:53:49 | [diff] [blame] | 59 | |
kulshin | 2510d5d | 2016-10-10 21:04:32 | [diff] [blame] | 60 | void NotifyWebkitPreferencesChanged(const std::string& pref_name); |
61 | |||||
[email protected] | d0aa78d | 2012-03-26 07:55:02 | [diff] [blame] | 62 | content::WebContents* web_contents_; |
jam | d9bb3b780 | 2015-01-28 20:32:16 | [diff] [blame] | 63 | Profile* profile_; |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 64 | content::NotificationRegistrar registrar_; |
mcnee | 336ea2c | 2017-05-23 22:50:59 | [diff] [blame] | 65 | #if !defined(OS_ANDROID) |
dcheng | 9603ab9 | 2016-04-08 04:17:32 | [diff] [blame] | 66 | std::unique_ptr<ChromeZoomLevelPrefs::DefaultZoomLevelSubscription> |
wjmaclean | e530aa74 | 2014-10-14 21:43:30 | [diff] [blame] | 67 | default_zoom_level_subscription_; |
Brett Wilson | 21cf626a | 2017-09-07 00:30:20 | [diff] [blame] | 68 | FontPrefChangeNotifier::Registrar font_change_registrar_; |
mcnee | 336ea2c | 2017-05-23 22:50:59 | [diff] [blame] | 69 | #endif // !defined(OS_ANDROID) |
Jeremy Roman | 495db68 | 2019-07-12 16:03:24 | [diff] [blame] | 70 | base::WeakPtrFactory<PrefsTabHelper> weak_ptr_factory_{this}; |
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 71 | |
François Doray | 4f51d5d | 2018-12-03 22:26:24 | [diff] [blame] | 72 | WEB_CONTENTS_USER_DATA_KEY_DECL(); |
73 | |||||
[email protected] | 9ce7cb4 | 2011-12-07 18:53:07 | [diff] [blame] | 74 | DISALLOW_COPY_AND_ASSIGN(PrefsTabHelper); |
75 | }; | ||||
76 | |||||
77 | #endif // CHROME_BROWSER_UI_PREFS_PREFS_TAB_HELPER_H_ |