blob: 9804a6eca668d1fdcc4836c622c4857ccd0df398 [file] [log] [blame]
// Copyright 2020 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_UI_COCOA_SCREENTIME_WEBPAGE_CONTROLLER_H_
#define CHROME_BROWSER_UI_COCOA_SCREENTIME_WEBPAGE_CONTROLLER_H_
#include "base/functional/callback.h"
#include "url/gurl.h"
@class NSView;
namespace screentime {
// The interface for the per-page controller. This interface exists to allow for
// abstracting away the concrete STWebpageController class, which is only
// available on some platforms and ties into a systemwide API that makes unit
// testing difficult. As little logic as possible should happen in
// implementations of WebpageController.
class WebpageController {
public:
using BlockedChangedCallback = base::RepeatingCallback<void(bool)>;
WebpageController() = default;
virtual ~WebpageController() = default;
virtual NSView* GetView() = 0;
// Called when the WebContents that this WebpageController is attached to
// changes its committed URL to |url|, to update ScreenTime's notion of the
// "page URL" (in Chrome parlance, the top-level frame URL).
virtual void PageURLChangedTo(const GURL& url) = 0;
};
} // namespace screentime
#endif // CHROME_BROWSER_UI_COCOA_SCREENTIME_WEBPAGE_CONTROLLER_H_