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 "base/strings/string16.h" 11 #include "base/values.h" 12 #include "content/common/content_export.h" 13 #include "content/public/common/browser_plugin_permission_type.h" 14 #include "ui/gfx/size.h" 15 #include "url/gurl.h" 16 17 namespace content { 18 19 struct NativeWebKeyboardEvent; 20 21 // Objects implement this interface to get notified about changes in the guest 22 // WebContents and to provide necessary functionality. 23 class CONTENT_EXPORT BrowserPluginGuestDelegate { 24 public: 25 virtual ~BrowserPluginGuestDelegate() {} 26 27 // Add a message to the console. 28 virtual void AddMessageToConsole(int32 level, 29 const base::string16& message, 30 int32 line_no, 31 const base::string16& source_id) {} 32 33 // Request the delegate to close this guest, and do whatever cleanup it needs 34 // to do. 35 virtual void Close() {} 36 37 // Notification that the embedder has completed attachment. 38 virtual void DidAttach() {} 39 40 // Informs the delegate that the guest render process is gone. |status| 41 // indicates whether the guest was killed, crashed, or was terminated 42 // gracefully. 43 virtual void GuestProcessGone(base::TerminationStatus status) {} 44 45 // Informs the delegate that the embedder has been destroyed. 46 virtual void EmbedderDestroyed() {} 47 48 virtual bool HandleKeyboardEvent(const NativeWebKeyboardEvent& event); 49 50 virtual bool IsDragAndDropEnabled(); 51 52 // Returns whether the user agent for the guest is being overridden. 53 virtual bool IsOverridingUserAgent() const; 54 55 // Notification that a load in the guest resulted in abort. Note that |url| 56 // may be invalid. 57 virtual void LoadAbort(bool is_top_level, 58 const GURL& url, 59 const std::string& error_type) {} 60 61 // Notification that the page has made some progress loading. |progress| is a 62 // value between 0.0 (nothing loaded) and 1.0 (page loaded completely). 63 virtual void LoadProgressed(double progress) {} 64 65 // Notification that the guest is no longer hung. 66 virtual void RendererResponsive() {} 67 68 // Notification that the guest is hung. 69 virtual void RendererUnresponsive() {} 70 71 typedef base::Callback<void(bool /* allow */, 72 const std::string& /* user_input */)> 73 PermissionResponseCallback; 74 75 // Request permission from the delegate to perform an action of the provided 76 // |permission_type|. Details of the permission request are found in 77 // |request_info|. A |callback| is provided to make the decision. 78 // Returns whether the delegate has, or will handle the permission request. 79 virtual bool RequestPermission( 80 BrowserPluginPermissionType permission_type, 81 const base::DictionaryValue& request_info, 82 const PermissionResponseCallback& callback, 83 bool allowed_by_default); 84 85 // Requests resolution of a potentially relative URL. 86 virtual GURL ResolveURL(const std::string& src); 87 88 // Notifies that the content size of the guest has changed in autosize mode. 89 virtual void SizeChanged(const gfx::Size& old_size, 90 const gfx::Size& new_size) {} 91 }; 92 93 } // namespace content 94 95 #endif // CONTENT_PUBLIC_BROWSER_BROWSER_PLUGIN_GUEST_DELEGATE_H_ 96