blob: 7d85368409d2ad0b99c909e051ace21401fc52c5 [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 "base/macros.h"
#include "ui/gfx/native_widget_types.h"
namespace content {
class WebContents;
} // namespace content
namespace web_modal {
class WebContentsModalDialogHost;
// Interface from SingleWebContentsDialogManager to
// WebContentsModalDialogManager.
class SingleWebContentsDialogManagerDelegate {
SingleWebContentsDialogManagerDelegate() {}
virtual ~SingleWebContentsDialogManagerDelegate() {}
virtual content::WebContents* GetWebContents() const = 0;
// Notify the delegate that the dialog is closing. The native
// manager will be deleted before the end of this call.
virtual void WillClose(gfx::NativeWindow dialog) = 0;
// Provides an interface for platform-specific UI implementation for the web
// contents modal dialog. Each object will manage a single dialog window
// during its lifecycle.
// Implementation classes should accept a dialog window at construction time
// and register to be notified when the dialog is closing, so that it can
// notify its delegate (WillClose method).
class SingleWebContentsDialogManager {
virtual ~SingleWebContentsDialogManager() {}
// Makes the web contents modal dialog visible. Only one web contents modal
// dialog is shown at a time per tab.
virtual void Show() = 0;
// Hides the web contents modal dialog without closing it.
virtual void Hide() = 0;
// Closes the web contents modal dialog.
// If this method causes a WillClose() call to the delegate, the manager
// will be deleted at the close of that invocation.
virtual void Close() = 0;
// Sets focus on the web contents modal dialog.
virtual void Focus() = 0;
// Runs a pulse animation for the web contents modal dialog.
virtual void Pulse() = 0;
// Called when the host view for the dialog has changed.
virtual void HostChanged(WebContentsModalDialogHost* new_host) = 0;
// Return the dialog under management by this object.
virtual gfx::NativeWindow dialog() = 0;
SingleWebContentsDialogManager() {}
} // namespace web_modal