// 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 CONTENT_PUBLIC_RENDERER_BROWSER_PLUGIN_DELEGATE_H_ #define CONTENT_PUBLIC_RENDERER_BROWSER_PLUGIN_DELEGATE_H_ #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" namespace gfx { class Size; } namespace v8 { class Isolate; class Object; template class Local; } // namespace v8 namespace content { class RenderFrame; // A delegate for BrowserPlugin which gets notified about the plugin load. // Implementations can provide additional steps necessary to change the load // behavior of the plugin. class CONTENT_EXPORT BrowserPluginDelegate { public: // Called when the BrowserPlugin's geometry has been computed for the first // time. virtual void Ready() {} // Called when plugin document has finished loading. virtual void DidFinishLoading() {} // Called when plugin document receives data. virtual void DidReceiveData(const char* data, int data_length) {} // Sets the instance ID that idenfies the plugin within current render // process. virtual void SetElementInstanceID(int element_instance_id) {} // Called when the plugin resizes. virtual void DidResizeElement(const gfx::Size& new_size) {} // Called when the plugin is about to be destroyed. virtual void DidDestroyElement() {} // Returns a scriptable object for the plugin. virtual v8::Local V8ScriptableObject(v8::Isolate* isolate); // Returns a weak pointer to this delegate. virtual base::WeakPtr GetWeakPtr() = 0; protected: virtual ~BrowserPluginDelegate() {} }; } // namespace content #endif // CONTENT_PUBLIC_RENDERER_BROWSER_PLUGIN_DELEGATE_H_