blob: 5092f549385ea777a8539c81655e69ca9ad97bf5 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/zoom/chrome_zoom_level_otr_delegate.h"
#include "base/bind.h"
#include "components/zoom/zoom_event_manager.h"
ChromeZoomLevelOTRDelegate::ChromeZoomLevelOTRDelegate(
base::WeakPtr<zoom::ZoomEventManager> zoom_event_manager)
: zoom_event_manager_(zoom_event_manager), host_zoom_map_(nullptr) {}
ChromeZoomLevelOTRDelegate::~ChromeZoomLevelOTRDelegate() {
}
void ChromeZoomLevelOTRDelegate::InitHostZoomMap(
content::HostZoomMap* host_zoom_map) {
// This init function must be called only once.
DCHECK(!host_zoom_map_);
DCHECK(host_zoom_map);
host_zoom_map_ = host_zoom_map;
zoom_subscription_ = host_zoom_map_->AddZoomLevelChangedCallback(base::Bind(
&ChromeZoomLevelOTRDelegate::OnZoomLevelChanged, base::Unretained(this)));
}
void ChromeZoomLevelOTRDelegate::OnZoomLevelChanged(
const content::HostZoomMap::ZoomLevelChange& change) {
// If there's a manager to aggregate ZoomLevelChanged events, pass this event
// along. Since we already hold a subscription to our associated HostZoomMap,
// we don't need to create a separate subscription for this.
if (zoom_event_manager_)
zoom_event_manager_->OnZoomLevelChanged(change);
}