blob: d7c58005d5a2a959deb72ef556545c968529608f [file] [log] [blame]
// Copyright 2016 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 SERVICES_NAVIGATION_PUBLIC_CPP_VIEW_DELEGATE_H_
#define SERVICES_NAVIGATION_PUBLIC_CPP_VIEW_DELEGATE_H_
#include <memory>
namespace gfx {
class Rect;
}
namespace navigation {
class View;
class ViewDelegate {
public:
// Called when an action within the page has caused a new View to be created.
// The delegate must take action to either create a new host for this View, or
// close it.
// |source| is the View originating the request.
// |new_view| is the newly created View.
// |is_popup| is true if the View should be shown in a popup window instead of
// a new tab.
// |requested_bounds| are the requested bounds of the new popup.
// |user_gesture| is true if the View was created as the result of an explicit
// user input event.
virtual void ViewCreated(View* source,
std::unique_ptr<View> new_view,
bool is_popup,
const gfx::Rect& requested_bounds,
bool user_gesture) = 0;
// Called when an action within the page has requested that the View be
// closed.
virtual void Close(View* source) = 0;
// Called when the application in the source view wants the delegate to
// navigate the view according to |params|.
virtual void OpenURL(View* source, mojom::OpenURLParamsPtr params) = 0;
};
} // namespace navigation
#endif // SERVICES_NAVIGATION_PUBLIC_CPP_VIEW_DELEGATE_H_