[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 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 | |||||
juncai | a64f769c2 | 2016-06-04 00:55:32 | [diff] [blame] | 5 | #include "components/zoom/zoom_event_manager.h" |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 6 | |
Gyuyoung Kim | 8b084c0 | 2018-01-23 13:34:37 | [diff] [blame] | 7 | #include <memory> |
8 | |||||
juncai | a64f769c2 | 2016-06-04 00:55:32 | [diff] [blame] | 9 | #include "components/zoom/zoom_event_manager_observer.h" |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 10 | #include "content/public/browser/browser_context.h" |
11 | |||||
12 | namespace { | ||||
13 | static const char kBrowserZoomEventManager[] = "browser_zoom_event_manager"; | ||||
14 | } | ||||
15 | |||||
juncai | a64f769c2 | 2016-06-04 00:55:32 | [diff] [blame] | 16 | namespace zoom { |
wjmaclean | 7f63c6b | 2014-12-09 14:59:55 | [diff] [blame] | 17 | |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 18 | ZoomEventManager* ZoomEventManager::GetForBrowserContext( |
19 | content::BrowserContext* context) { | ||||
avi | 8945fc9 | 2017-05-02 16:03:23 | [diff] [blame] | 20 | if (!context->GetUserData(kBrowserZoomEventManager)) { |
21 | context->SetUserData(kBrowserZoomEventManager, | ||||
Gyuyoung Kim | 8b084c0 | 2018-01-23 13:34:37 | [diff] [blame] | 22 | std::make_unique<ZoomEventManager>()); |
avi | 8945fc9 | 2017-05-02 16:03:23 | [diff] [blame] | 23 | } |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 24 | return static_cast<ZoomEventManager*>( |
25 | context->GetUserData(kBrowserZoomEventManager)); | ||||
26 | } | ||||
27 | |||||
Jeremy Roman | 5c341f6d | 2019-07-15 15:56:10 | [diff] [blame] | 28 | ZoomEventManager::ZoomEventManager() {} |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 29 | |
juncai | a64f769c2 | 2016-06-04 00:55:32 | [diff] [blame] | 30 | ZoomEventManager::~ZoomEventManager() {} |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 31 | |
32 | void ZoomEventManager::OnZoomLevelChanged( | ||||
33 | const content::HostZoomMap::ZoomLevelChange& change) { | ||||
34 | zoom_level_changed_callbacks_.Notify(change); | ||||
35 | } | ||||
36 | |||||
dcheng | 3f767dc3 | 2016-04-25 22:54:22 | [diff] [blame] | 37 | std::unique_ptr<content::HostZoomMap::Subscription> |
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 38 | ZoomEventManager::AddZoomLevelChangedCallback( |
danakj | 6aa13ea | 2019-12-10 14:53:26 | [diff] [blame] | 39 | content::HostZoomMap::ZoomLevelChangedCallback callback) { |
40 | return zoom_level_changed_callbacks_.Add(std::move(callback)); | ||||
[email protected] | 63d1f9b | 2014-07-05 19:09:03 | [diff] [blame] | 41 | } |
wjmaclean | 7f63c6b | 2014-12-09 14:59:55 | [diff] [blame] | 42 | |
wjmaclean | 70081cb | 2015-02-04 16:14:22 | [diff] [blame] | 43 | void ZoomEventManager::OnDefaultZoomLevelChanged() { |
ericwilligers | ff2af33 | 2016-10-19 00:16:50 | [diff] [blame] | 44 | for (auto& observer : observers_) |
45 | observer.OnDefaultZoomLevelChanged(); | ||||
wjmaclean | 70081cb | 2015-02-04 16:14:22 | [diff] [blame] | 46 | } |
47 | |||||
Alan Cutter | 108c068 | 2018-07-03 05:03:29 | [diff] [blame] | 48 | void ZoomEventManager::AddObserver(ZoomEventManagerObserver* observer) { |
wjmaclean | 70081cb | 2015-02-04 16:14:22 | [diff] [blame] | 49 | observers_.AddObserver(observer); |
50 | } | ||||
51 | |||||
Alan Cutter | 108c068 | 2018-07-03 05:03:29 | [diff] [blame] | 52 | void ZoomEventManager::RemoveObserver(ZoomEventManagerObserver* observer) { |
wjmaclean | 70081cb | 2015-02-04 16:14:22 | [diff] [blame] | 53 | observers_.RemoveObserver(observer); |
54 | } | ||||
55 | |||||
juncai | a64f769c2 | 2016-06-04 00:55:32 | [diff] [blame] | 56 | } // namespace zoom |