blob: e222232a8444ecb880b27dce779989fb6041b5a2 [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.
#ifndef COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_
#define COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_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 {
public:
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;
private:
DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManagerDelegate);
};
// 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 {
public:
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;
protected:
SingleWebContentsDialogManager() {}
private:
DISALLOW_COPY_AND_ASSIGN(SingleWebContentsDialogManager);
};
} // namespace web_modal
#endif // COMPONENTS_WEB_MODAL_SINGLE_WEB_CONTENTS_DIALOG_MANAGER_H_