Index: content/renderer/browser_plugin/browser_plugin.h |
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h |
deleted file mode 100644 |
index 14ea94980377ea2fb35fd82578198be17797745c..0000000000000000000000000000000000000000 |
--- a/content/renderer/browser_plugin/browser_plugin.h |
+++ /dev/null |
@@ -1,410 +0,0 @@ |
-// Copyright (c) 2012 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_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |
-#define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |
- |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebPlugin.h" |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/process_util.h" |
-#include "base/sequenced_task_runner_helpers.h" |
-#if defined(OS_WIN) |
-#include "base/shared_memory.h" |
-#endif |
-#include "content/common/browser_plugin_message_enums.h" |
-#include "content/renderer/browser_plugin/browser_plugin_backing_store.h" |
-#include "content/renderer/browser_plugin/browser_plugin_bindings.h" |
-#include "content/renderer/render_view_impl.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragStatus.h" |
- |
-struct BrowserPluginHostMsg_AutoSize_Params; |
-struct BrowserPluginHostMsg_ResizeGuest_Params; |
-struct BrowserPluginMsg_LoadCommit_Params; |
-struct BrowserPluginMsg_UpdateRect_Params; |
- |
-namespace content { |
- |
-class BrowserPluginCompositingHelper; |
-class BrowserPluginManager; |
-class MockBrowserPlugin; |
- |
-class CONTENT_EXPORT BrowserPlugin : |
- NON_EXPORTED_BASE(public WebKit::WebPlugin) { |
- public: |
- RenderViewImpl* render_view() const { return render_view_.get(); } |
- int render_view_routing_id() const { return render_view_routing_id_; } |
- |
- bool OnMessageReceived(const IPC::Message& msg); |
- |
- // Update Browser Plugin's DOM Node attribute |attribute_name| with the value |
- // |attribute_value|. |
- void UpdateDOMAttribute(const std::string& attribute_name, |
- const std::string& attribute_value); |
- // Remove the DOM Node attribute with the name |attribute_name|. |
- void RemoveDOMAttribute(const std::string& attribute_name); |
- // Get Browser Plugin's DOM Node attribute |attribute_name|'s value. |
- std::string GetDOMAttributeValue(const std::string& attribute_name) const; |
- // Checks if the attribute |attribute_name| exists in the DOM. |
- bool HasDOMAttribute(const std::string& attribute_name) const; |
- |
- // Get the name attribute value. |
- std::string GetNameAttribute() const; |
- // Parse the name attribute value. |
- void ParseNameAttribute(); |
- // Get the src attribute value of the BrowserPlugin instance. |
- std::string GetSrcAttribute() const; |
- // Parse the src attribute value of the BrowserPlugin instance. |
- bool ParseSrcAttribute(std::string* error_message); |
- // Get the autosize attribute value. |
- bool GetAutoSizeAttribute() const; |
- // Parses the autosize attribute value. |
- void ParseAutoSizeAttribute(); |
- // Get the maxheight attribute value. |
- int GetMaxHeightAttribute() const; |
- // Get the maxwidth attribute value. |
- int GetMaxWidthAttribute() const; |
- // Get the minheight attribute value. |
- int GetMinHeightAttribute() const; |
- // Get the minwidth attribute value. |
- int GetMinWidthAttribute() const; |
- // Parse the minwidth, maxwidth, minheight, and maxheight attribute values. |
- void ParseSizeContraintsChanged(); |
- // The partition identifier string is stored as UTF-8. |
- std::string GetPartitionAttribute() const; |
- // This method can be successfully called only before the first navigation for |
- // this instance of BrowserPlugin. If an error occurs, the |error_message| is |
- // set appropriately to indicate the failure reason. |
- bool ParsePartitionAttribute(std::string* error_message); |
- // True if the partition attribute can be removed. |
- bool CanRemovePartitionAttribute(std::string* error_message); |
- |
- bool InAutoSizeBounds(const gfx::Size& size) const; |
- |
- // Get the guest's DOMWindow proxy. |
- NPObject* GetContentWindow() const; |
- |
- // Returns Chrome's process ID for the current guest. |
- int guest_process_id() const { return guest_process_id_; } |
- // Returns Chrome's route ID for the current guest. |
- int guest_route_id() const { return guest_route_id_; } |
- // Returns whether the guest process has crashed. |
- bool guest_crashed() const { return guest_crashed_; } |
- |
- // Query whether the guest can navigate back to the previous entry. |
- bool CanGoBack() const; |
- // Query whether the guest can navigation forward to the next entry. |
- bool CanGoForward() const; |
- |
- // Informs the guest of an updated focus state. |
- void UpdateGuestFocusState(); |
- // Indicates whether the guest should be focused. |
- bool ShouldGuestBeFocused() const; |
- |
- // Tells the BrowserPlugin to tell the guest to navigate to the previous |
- // navigation entry in the navigation history. |
- void Back(); |
- // Tells the BrowserPlugin to tell the guest to navigate to the next |
- // navigation entry in the navigation history. |
- void Forward(); |
- // Tells the BrowserPlugin to tell the guest to navigate to a position |
- // relative to the current index in its navigation history. |
- void Go(int relativeIndex); |
- // Tells the BrowserPlugin to terminate the guest process. |
- void TerminateGuest(); |
- |
- // A request from JavaScript has been made to stop the loading of the page. |
- void Stop(); |
- // A request from JavaScript has been made to reload the page. |
- void Reload(); |
- // A request to enable hardware compositing. |
- void EnableCompositing(bool enable); |
- // A request from content client to track lifetime of a JavaScript object |
- // related to a permission request object. |
- // This is used to clean up hanging permission request objects. |
- void PersistRequestObject(const NPVariant* request, |
- const std::string& type, |
- int id); |
- |
- // Returns true if |point| lies within the bounds of the plugin rectangle. |
- // Not OK to use this function for making security-sensitive decision since it |
- // can return false positives when the plugin has rotation transformation |
- // applied. |
- bool InBounds(const gfx::Point& point) const; |
- |
- gfx::Point ToLocalCoordinates(const gfx::Point& point) const; |
- // Called by browser plugin binding. |
- void OnEmbedderDecidedPermission(int request_id, bool allow); |
- |
- |
- // WebKit::WebPlugin implementation. |
- virtual WebKit::WebPluginContainer* container() const OVERRIDE; |
- virtual bool initialize(WebKit::WebPluginContainer* container) OVERRIDE; |
- virtual void destroy() OVERRIDE; |
- virtual NPObject* scriptableObject() OVERRIDE; |
- virtual bool supportsKeyboardFocus() const OVERRIDE; |
- virtual bool canProcessDrag() const OVERRIDE; |
- virtual void paint( |
- WebKit::WebCanvas* canvas, |
- const WebKit::WebRect& rect) OVERRIDE; |
- virtual void updateGeometry( |
- const WebKit::WebRect& frame_rect, |
- const WebKit::WebRect& clip_rect, |
- const WebKit::WebVector<WebKit::WebRect>& cut_outs_rects, |
- bool is_visible) OVERRIDE; |
- virtual void updateFocus(bool focused) OVERRIDE; |
- virtual void updateVisibility(bool visible) OVERRIDE; |
- virtual bool acceptsInputEvents() OVERRIDE; |
- virtual bool handleInputEvent( |
- const WebKit::WebInputEvent& event, |
- WebKit::WebCursorInfo& cursor_info) OVERRIDE; |
- virtual bool handleDragStatusUpdate(WebKit::WebDragStatus drag_status, |
- const WebKit::WebDragData& drag_data, |
- WebKit::WebDragOperationsMask mask, |
- const WebKit::WebPoint& position, |
- const WebKit::WebPoint& screen) OVERRIDE; |
- virtual void didReceiveResponse( |
- const WebKit::WebURLResponse& response) OVERRIDE; |
- virtual void didReceiveData(const char* data, int data_length) OVERRIDE; |
- virtual void didFinishLoading() OVERRIDE; |
- virtual void didFailLoading(const WebKit::WebURLError& error) OVERRIDE; |
- virtual void didFinishLoadingFrameRequest( |
- const WebKit::WebURL& url, |
- void* notify_data) OVERRIDE; |
- virtual void didFailLoadingFrameRequest( |
- const WebKit::WebURL& url, |
- void* notify_data, |
- const WebKit::WebURLError& error) OVERRIDE; |
- private: |
- friend class base::DeleteHelper<BrowserPlugin>; |
- // Only the manager is allowed to create a BrowserPlugin. |
- friend class BrowserPluginManagerImpl; |
- friend class MockBrowserPluginManager; |
- |
- // For unit/integration tests. |
- friend class MockBrowserPlugin; |
- |
- // A BrowserPlugin object is a controller that represents an instance of a |
- // browser plugin within the embedder renderer process. Each BrowserPlugin |
- // within a process has a unique instance_id that is used to route messages |
- // to it. It takes in a RenderViewImpl that it's associated with along |
- // with the frame within which it lives and the initial attributes assigned |
- // to it on creation. |
- BrowserPlugin( |
- RenderViewImpl* render_view, |
- WebKit::WebFrame* frame, |
- const WebKit::WebPluginParams& params); |
- |
- virtual ~BrowserPlugin(); |
- |
- int width() const { return plugin_rect_.width(); } |
- int height() const { return plugin_rect_.height(); } |
- int instance_id() const { return instance_id_; } |
- // Gets the Max Height value used for auto size. |
- int GetAdjustedMaxHeight() const; |
- // Gets the Max Width value used for auto size. |
- int GetAdjustedMaxWidth() const; |
- // Gets the Min Height value used for auto size. |
- int GetAdjustedMinHeight() const; |
- // Gets the Min Width value used for auto size. |
- int GetAdjustedMinWidth() const; |
- BrowserPluginManager* browser_plugin_manager() const { |
- return browser_plugin_manager_; |
- } |
- |
- // Virtual to allow for mocking in tests. |
- virtual float GetDeviceScaleFactor() const; |
- |
- // Parses the attributes of the browser plugin from the element's attributes |
- // and sets them appropriately. |
- void ParseAttributes(); |
- |
- // Triggers the event-listeners for |event_name|. Note that the function |
- // frees all the values in |props|. |
- void TriggerEvent(const std::string& event_name, |
- std::map<std::string, base::Value*>* props); |
- |
- // Creates and maps a shared damage buffer. |
- virtual base::SharedMemory* CreateDamageBuffer( |
- const size_t size, |
- base::SharedMemoryHandle* shared_memory_handle); |
- // Swaps out the |current_damage_buffer_| with the |pending_damage_buffer_|. |
- void SwapDamageBuffers(); |
- |
- // Populates BrowserPluginHostMsg_ResizeGuest_Params with resize state and |
- // allocates a new |pending_damage_buffer_| if in software rendering mode. |
- void PopulateResizeGuestParameters( |
- BrowserPluginHostMsg_ResizeGuest_Params* params, |
- const gfx::Size& view_size); |
- |
- // Populates BrowserPluginHostMsg_AutoSize_Params object with autosize state. |
- void PopulateAutoSizeParameters( |
- BrowserPluginHostMsg_AutoSize_Params* params, bool current_auto_size); |
- |
- // Populates both AutoSize and ResizeGuest parameters based on the current |
- // autosize state. |
- void GetDamageBufferWithSizeParams( |
- BrowserPluginHostMsg_AutoSize_Params* auto_size_params, |
- BrowserPluginHostMsg_ResizeGuest_Params* resize_guest_params); |
- |
- // Informs the guest of an updated autosize state. |
- void UpdateGuestAutoSizeState(bool current_auto_size); |
- |
- // Informs the BrowserPlugin that guest has changed its size in autosize mode. |
- void SizeChangedDueToAutoSize(const gfx::Size& old_view_size); |
- |
- bool HasEventListeners(const std::string& event_name); |
- |
- // Indicates whether a damage buffer was used by the guest process for the |
- // provided |params|. |
- static bool UsesDamageBuffer( |
- const BrowserPluginMsg_UpdateRect_Params& params); |
- |
- // Indicates whether the |pending_damage_buffer_| was used to copy over pixels |
- // given the provided |params|. |
- bool UsesPendingDamageBuffer( |
- const BrowserPluginMsg_UpdateRect_Params& params); |
- |
- // Sets the instance ID of the BrowserPlugin and requests a guest from the |
- // browser process. |
- void SetInstanceID(int instance_id); |
- |
- // Requests media access permission from the embedder. |
- void RequestMediaPermission(int request_id, |
- const base::DictionaryValue& request_info); |
- // Informs the BrowserPlugin that the guest's permission request has been |
- // allowed or denied by the embedder. |
- void RespondPermission(BrowserPluginPermissionType permission_type, |
- int request_id, |
- bool allow); |
- |
- // If the request with id |request_id| is pending then informs the |
- // BrowserPlugin that the guest's permission request has been allowed or |
- // denied by the embedder. |
- void RespondPermissionIfRequestIsPending(int request_id, bool allow); |
- // Cleans up pending permission request once the associated event.request |
- // object goes out of scope in JavaScript. |
- void OnRequestObjectGarbageCollected(int request_id); |
- // V8 garbage collection callback for |object|. |
- static void WeakCallbackForPersistObject(v8::Persistent<v8::Value> object, |
- void* param); |
- |
- // IPC message handlers. |
- // Please keep in alphabetical order. |
- void OnAdvanceFocus(int instance_id, bool reverse); |
- void OnBuffersSwapped(int instance_id, |
- const gfx::Size& size, |
- std::string mailbox_name, |
- int gpu_route_id, |
- int gpu_host_id); |
- void OnGuestContentWindowReady(int instance_id, |
- int content_window_routing_id); |
- void OnGuestGone(int instance_id, int process_id, int status); |
- void OnGuestResponsive(int instance_id, int process_id); |
- void OnGuestUnresponsive(int instance_id, int process_id); |
- void OnLoadAbort(int instance_id, |
- const GURL& url, |
- bool is_top_level, |
- const std::string& type); |
- void OnLoadCommit(int instance_id, |
- const BrowserPluginMsg_LoadCommit_Params& params); |
- void OnLoadRedirect(int instance_id, |
- const GURL& old_url, |
- const GURL& new_url, |
- bool is_top_level); |
- void OnLoadStart(int instance_id, const GURL& url, bool is_top_level); |
- void OnLoadStop(int instance_id); |
- // Requests permission from the embedder. |
- void OnRequestPermission(int instance_id, |
- BrowserPluginPermissionType permission_type, |
- int request_id, |
- const base::DictionaryValue& request_info); |
- void OnSetCursor(int instance_id, const WebCursor& cursor); |
- void OnShouldAcceptTouchEvents(int instance_id, bool accept); |
- void OnUpdatedName(int instance_id, const std::string& name); |
- void OnUpdateRect(int instance_id, |
- const BrowserPluginMsg_UpdateRect_Params& params); |
- |
- int instance_id_; |
- base::WeakPtr<RenderViewImpl> render_view_; |
- // We cache the |render_view_|'s routing ID because we need it on destruction. |
- // If the |render_view_| is destroyed before the BrowserPlugin is destroyed |
- // then we will attempt to access a NULL pointer. |
- int render_view_routing_id_; |
- WebKit::WebPluginContainer* container_; |
- scoped_ptr<BrowserPluginBindings> bindings_; |
- scoped_ptr<BrowserPluginBackingStore> backing_store_; |
- scoped_ptr<base::SharedMemory> current_damage_buffer_; |
- scoped_ptr<base::SharedMemory> pending_damage_buffer_; |
- uint32 damage_buffer_sequence_id_; |
- bool resize_ack_received_; |
- gfx::Rect plugin_rect_; |
- // Bitmap for crashed plugin. Lazily initialized, non-owning pointer. |
- SkBitmap* sad_guest_; |
- bool guest_crashed_; |
- scoped_ptr<BrowserPluginHostMsg_ResizeGuest_Params> pending_resize_params_; |
- // True if we have ever sent a NavigateGuest message to the embedder. |
- bool navigate_src_sent_; |
- bool auto_size_ack_pending_; |
- int guest_process_id_; |
- int guest_route_id_; |
- std::string storage_partition_id_; |
- bool persist_storage_; |
- bool valid_partition_id_; |
- int content_window_routing_id_; |
- bool plugin_focused_; |
- // Tracks the visibility of the browser plugin regardless of the whole |
- // embedder RenderView's visibility. |
- bool visible_; |
- |
- WebCursor cursor_; |
- |
- gfx::Size last_view_size_; |
- bool size_changed_in_flight_; |
- bool allocate_instance_id_sent_; |
- |
- // Each permission request item in the map is a pair of request id and |
- // permission type. |
- typedef std::map<int, std::pair<int, BrowserPluginPermissionType> > |
- PendingPermissionRequests; |
- PendingPermissionRequests pending_permission_requests_; |
- |
- typedef std::pair<int, base::WeakPtr<BrowserPlugin> > |
- AliveV8PermissionRequestItem; |
- std::map<int, AliveV8PermissionRequestItem*> |
- alive_v8_permission_request_objects_; |
- |
- // BrowserPlugin outlives RenderViewImpl in Chrome Apps and so we need to |
- // store the BrowserPlugin's BrowserPluginManager in a member variable to |
- // avoid accessing the RenderViewImpl. |
- scoped_refptr<BrowserPluginManager> browser_plugin_manager_; |
- |
- // Important: Do not add more history state here. |
- // We strongly discourage storing additional history state (such as page IDs) |
- // in the embedder process, at the risk of having incorrect information that |
- // can lead to broken back/forward logic in apps. |
- // It's also important that this state does not get modified by any logic in |
- // the embedder process. It should only be updated in response to navigation |
- // events in the guest. No assumptions should be made about how the index |
- // will change after a navigation (e.g., for back, forward, or go), because |
- // the changes are not always obvious. For example, there is a maximum |
- // number of entries and earlier ones will automatically be pruned. |
- int current_nav_entry_index_; |
- int nav_entry_count_; |
- |
- // Used for HW compositing. |
- bool compositing_enabled_; |
- scoped_refptr<BrowserPluginCompositingHelper> compositing_helper_; |
- |
- // Weak factory used in v8 |MakeWeak| callback, since the v8 callback might |
- // get called after BrowserPlugin has been destroyed. |
- base::WeakPtrFactory<BrowserPlugin> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BrowserPlugin); |
-}; |
- |
-} // namespace content |
- |
-#endif // CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ |