Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(436)

Side by Side Diff: chrome/browser/ui/zoom/chrome_zoom_level_otr_delegate.cc

Issue 2630583002: Add setting to isolate zoom changes by default. (Closed)
Patch Set: ... and tell closure_compiler. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/zoom/chrome_zoom_level_otr_delegate.h" 5 #include "chrome/browser/ui/zoom/chrome_zoom_level_otr_delegate.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chrome/common/pref_names.h"
8 #include "components/zoom/zoom_event_manager.h" 9 #include "components/zoom/zoom_event_manager.h"
9 10
10 ChromeZoomLevelOTRDelegate::ChromeZoomLevelOTRDelegate( 11 ChromeZoomLevelOTRDelegate::ChromeZoomLevelOTRDelegate(
12 PrefService* pref_service,
13 const base::FilePath& profile_path,
14 const base::FilePath& partition_path,
11 base::WeakPtr<zoom::ZoomEventManager> zoom_event_manager) 15 base::WeakPtr<zoom::ZoomEventManager> zoom_event_manager)
12 : zoom_event_manager_(zoom_event_manager), host_zoom_map_(nullptr) {} 16 : partitioned_prefs_(pref_service, profile_path, partition_path),
17 zoom_event_manager_(zoom_event_manager),
18 host_zoom_map_(nullptr) {
19 // Observe changes to the zoom scope preference in case it is changed in the
20 // parent profile.
21 last_scope_was_per_origin_ = GetZoomScopeIsPerOriginPref();
22 pref_registrar_.Init(pref_service);
23 pref_registrar_.Add(
24 prefs::kPartitionZoomScopeIsPerOrigin,
25 base::Bind(&ChromeZoomLevelOTRDelegate::OnParentScopeChanged,
26 base::Unretained(this)));
27 }
13 28
14 ChromeZoomLevelOTRDelegate::~ChromeZoomLevelOTRDelegate() { 29 ChromeZoomLevelOTRDelegate::~ChromeZoomLevelOTRDelegate() {
15 } 30 }
16 31
32 bool ChromeZoomLevelOTRDelegate::GetZoomScopeIsPerOriginPref() const {
33 bool is_per_origin = kZoomScopeSettingDefault;
34
35 // If no value has been previously set, |is_per_origin| will be untouched
36 // from the default value we've set above.
37 partitioned_prefs_.GetBoolean(prefs::kPartitionZoomScopeIsPerOrigin,
38 &is_per_origin);
39 return is_per_origin;
40 }
41
42 std::unique_ptr<ChromeZoomLevelOTRDelegate::DefaultZoomScopeSubscription>
43 ChromeZoomLevelOTRDelegate::RegisterDefaultZoomScopeCallback(
44 const base::Closure& callback) {
45 return default_scope_changed_callbacks_.Add(callback);
46 }
47
48 void ChromeZoomLevelOTRDelegate::OnParentScopeChanged() {
49 bool new_scope_is_per_origin = GetZoomScopeIsPerOriginPref();
50 // Make sure that we're not being notified for a scope change in another
51 // partition.
52 if (new_scope_is_per_origin == last_scope_was_per_origin_)
53 return;
54
55 last_scope_was_per_origin_ = new_scope_is_per_origin;
56 default_scope_changed_callbacks_.Notify();
57 }
58
17 void ChromeZoomLevelOTRDelegate::InitHostZoomMap( 59 void ChromeZoomLevelOTRDelegate::InitHostZoomMap(
18 content::HostZoomMap* host_zoom_map) { 60 content::HostZoomMap* host_zoom_map) {
19 // This init function must be called only once. 61 // This init function must be called only once.
20 DCHECK(!host_zoom_map_); 62 DCHECK(!host_zoom_map_);
21 DCHECK(host_zoom_map); 63 DCHECK(host_zoom_map);
22 host_zoom_map_ = host_zoom_map; 64 host_zoom_map_ = host_zoom_map;
23 65
24 zoom_subscription_ = host_zoom_map_->AddZoomLevelChangedCallback(base::Bind( 66 zoom_subscription_ = host_zoom_map_->AddZoomLevelChangedCallback(base::Bind(
25 &ChromeZoomLevelOTRDelegate::OnZoomLevelChanged, base::Unretained(this))); 67 &ChromeZoomLevelOTRDelegate::OnZoomLevelChanged, base::Unretained(this)));
26 } 68 }
27 69
28 void ChromeZoomLevelOTRDelegate::OnZoomLevelChanged( 70 void ChromeZoomLevelOTRDelegate::OnZoomLevelChanged(
29 const content::HostZoomMap::ZoomLevelChange& change) { 71 const content::HostZoomMap::ZoomLevelChange& change) {
30 // If there's a manager to aggregate ZoomLevelChanged events, pass this event 72 // If there's a manager to aggregate ZoomLevelChanged events, pass this event
31 // along. Since we already hold a subscription to our associated HostZoomMap, 73 // along. Since we already hold a subscription to our associated HostZoomMap,
32 // we don't need to create a separate subscription for this. 74 // we don't need to create a separate subscription for this.
33 if (zoom_event_manager_) 75 if (zoom_event_manager_)
34 zoom_event_manager_->OnZoomLevelChanged(change); 76 zoom_event_manager_->OnZoomLevelChanged(change);
35 } 77 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/zoom/chrome_zoom_level_otr_delegate.h ('k') | chrome/browser/ui/zoom/chrome_zoom_level_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698