blob: a422dfe0894e62df9036825550e858f70fd2c92d [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_
#define CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_
#include "content/public/browser/invalidate_type.h"
#if BUILDFLAG(IS_ANDROID)
namespace gfx {
class ColorSpace;
enum class ContentColorUsage : uint8_t;
} // namespace gfx
namespace viz {
class RasterContextProvider;
} // namespace viz
#endif // BUILDFLAG(IS_ANDROID)
namespace content {
struct EntryChangedDetails;
struct LoadCommittedDetails;
struct PrunedDetails;
// Interface for objects embedding a NavigationController to provide the
// functionality NavigationController needs.
class NavigationControllerDelegate {
public:
virtual ~NavigationControllerDelegate() {}
virtual void NotifyNavigationStateChangedFromController(
InvalidateTypes changed_flags) = 0;
// Methods from WebContentsImpl that NavigationControllerImpl needs to
// call. NavigationControllerImpl cannot call them directly because
// renderer_host/ cannot depend on WebContents.
virtual void NotifyBeforeFormRepostWarningShow() = 0;
virtual void NotifyNavigationEntryCommitted(
const LoadCommittedDetails& load_details) = 0;
virtual void NotifyNavigationEntryChanged(
const EntryChangedDetails& change_details) = 0;
virtual void NotifyNavigationListPruned(
const PrunedDetails& pruned_details) = 0;
virtual void NotifyNavigationEntriesDeleted() = 0;
virtual void ActivateAndShowRepostFormWarningDialog() = 0;
// Returns whether URLs for aborted browser-initiated navigations should be
// preserved in the omnibox. Defaults to false.
virtual bool ShouldPreserveAbortedURLs() = 0;
virtual void UpdateOverridingUserAgent() = 0;
#if BUILDFLAG(IS_ANDROID)
virtual scoped_refptr<viz::RasterContextProvider>
GetRasterContextProvider() = 0;
virtual gfx::ColorSpace GetOutputColorSpace(
gfx::ContentColorUsage color_usage,
bool needs_alpha) = 0;
#endif // BUILDFLAG(IS_ANDROID)
};
} // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_NAVIGATION_CONTROLLER_DELEGATE_H_