browser_plugin_guest_delegate.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_
6#define CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_
7
8#include "base/callback_forward.h"
9#include "base/process/kill.h"
10#include "content/common/content_export.h"
11
12namespace gfx {
13class Size;
14}  // namespace gfx
15
16namespace content {
17
18class WebContents;
19
20// Objects implement this interface to get notified about changes in the guest
21// WebContents and to provide necessary functionality.
22class CONTENT_EXPORT BrowserPluginGuestDelegate {
23 public:
24  virtual ~BrowserPluginGuestDelegate() {}
25
26  // Notification that the embedder has completed attachment.
27  virtual void DidAttach() {}
28
29  // Requests setting the zoom level to the provided |zoom_level|.
30  virtual void SetZoom(double zoom_factor) {}
31
32  virtual bool IsDragAndDropEnabled();
33
34  // Notifies that the content size of the guest has changed in autosize mode.
35  virtual void SizeChanged(const gfx::Size& old_size,
36                           const gfx::Size& new_size) {}
37
38  // Asks the delegate if the given guest can lock the pointer.
39  // Invoking the |callback| synchronously is OK.
40  virtual void RequestPointerLockPermission(
41      bool user_gesture,
42      bool last_unlocked_by_target,
43      const base::Callback<void(bool)>& callback) {}
44
45  // Request navigating the guest to the provided |src| URL.
46  virtual void NavigateGuest(const std::string& src) {}
47
48  // Requests that the delegate destroy itself along with its associated
49  // WebContents.
50  virtual void Destroy() {}
51
52  // Registers a |callback| with the delegate that the delegate would call when
53  // it is about to be destroyed.
54  typedef base::Callback<void()> DestructionCallback;
55  virtual void RegisterDestructionCallback(
56      const DestructionCallback& callback) {}
57};
58
59}  // namespace content
60
61#endif  // CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_
62