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