chromium/chrome/browser/preloading/preview/preview_zoom_controller.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_PRELOADING_PREVIEW_PREVIEW_ZOOM_CONTROLLER_H_
#define CHROME_BROWSER_PRELOADING_PREVIEW_PREVIEW_ZOOM_CONTROLLER_H_

#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/page_zoom.h"

namespace content {
class WebContents;
}  // namespace content

// Preview-specific zoom controller
//
// PreviewZoomController manages per-host zoom levels, applies it to previewed
// page, and updates it via user actions. Unlike ZoomController, zoom levels are
// durable in a session and not persisted to prefs.
//
// Note that this is a short-term solution. For more details, see the discussion
// https://docs.google.com/document/d/1FS6uOrm8mxupSVVCWA5f4qwcAiZA8YsFEQwBWo0lKkk/edit?resourcekey=0-iASeiM5hicof70TpiAue6g&disco=AAAA-uh-FqQ
// TODO(b:315313138): Revisit it later.
//
// The call of ZoomController::DidFinishNavigation must be followed by
// PreviewZoomController::DidFinishNavigation to reset zoom mode and update zoom
// level for a page correctly. To ensure this, the creation of ZoomController
// must be followed by the one of PreviewZoomController, because the observer
// invocation order depends on its registration order.
class PreviewZoomController final : public content::WebContentsObserver {};

#endif  // CHROME_BROWSER_PRELOADING_PREVIEW_PREVIEW_ZOOM_CONTROLLER_H_