Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: content/renderer/browser_plugin/browser_plugin.h

Issue 21297005: <webview>: Refactor Permission API to chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup_permissions
Patch Set: Addressed jam@'s comments Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ 5 #ifndef CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_
6 #define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ 6 #define CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_
7 7
8 #include "third_party/WebKit/public/web/WebPlugin.h" 8 #include "third_party/WebKit/public/web/WebPlugin.h"
9 9
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "base/sequenced_task_runner_helpers.h" 12 #include "base/sequenced_task_runner_helpers.h"
13 #if defined(OS_WIN) 13 #if defined(OS_WIN)
14 #include "base/memory/shared_memory.h" 14 #include "base/memory/shared_memory.h"
15 #endif 15 #endif
16 #include "base/values.h" 16 #include "base/values.h"
17 #include "content/common/browser_plugin/browser_plugin_message_enums.h" 17 #include "content/public/common/browser_plugin_message_enums.h"
18 #include "content/renderer/browser_plugin/browser_plugin_backing_store.h" 18 #include "content/renderer/browser_plugin/browser_plugin_backing_store.h"
19 #include "content/renderer/browser_plugin/browser_plugin_bindings.h" 19 #include "content/renderer/browser_plugin/browser_plugin_bindings.h"
20 #include "content/renderer/mouse_lock_dispatcher.h" 20 #include "content/renderer/mouse_lock_dispatcher.h"
21 #include "content/renderer/render_view_impl.h" 21 #include "content/renderer/render_view_impl.h"
22 #include "third_party/WebKit/public/web/WebDragStatus.h" 22 #include "third_party/WebKit/public/web/WebDragStatus.h"
23 23
24 struct BrowserPluginHostMsg_AutoSize_Params; 24 struct BrowserPluginHostMsg_AutoSize_Params;
25 struct BrowserPluginHostMsg_ResizeGuest_Params; 25 struct BrowserPluginHostMsg_ResizeGuest_Params;
26 struct BrowserPluginMsg_Attach_ACK_Params; 26 struct BrowserPluginMsg_Attach_ACK_Params;
27 struct BrowserPluginMsg_BuffersSwapped_Params; 27 struct BrowserPluginMsg_BuffersSwapped_Params;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 // renderer. 113 // renderer.
114 void UpdateDeviceScaleFactor(float device_scale_factor); 114 void UpdateDeviceScaleFactor(float device_scale_factor);
115 115
116 // A request to enable hardware compositing. 116 // A request to enable hardware compositing.
117 void EnableCompositing(bool enable); 117 void EnableCompositing(bool enable);
118 // A request from content client to track lifetime of a JavaScript object. 118 // A request from content client to track lifetime of a JavaScript object.
119 // This is used to track permission request objects, and new window API 119 // This is used to track permission request objects, and new window API
120 // window objects. 120 // window objects.
121 void TrackObjectLifetime(const NPVariant* request, int id); 121 void TrackObjectLifetime(const NPVariant* request, int id);
122 122
123 // If the request with id |request_id| is pending then informs the
124 // BrowserPlugin that the guest's permission request has been allowed or
125 // denied by the embedder. Returns whether the request was pending.
126 bool RespondPermissionIfRequestIsPending(int request_id,
127 bool allow,
128 const std::string& user_input);
129
130 // Returns true if |point| lies within the bounds of the plugin rectangle. 123 // Returns true if |point| lies within the bounds of the plugin rectangle.
131 // Not OK to use this function for making security-sensitive decision since it 124 // Not OK to use this function for making security-sensitive decision since it
132 // can return false positives when the plugin has rotation transformation 125 // can return false positives when the plugin has rotation transformation
133 // applied. 126 // applied.
134 bool InBounds(const gfx::Point& point) const; 127 bool InBounds(const gfx::Point& point) const;
135 128
136 gfx::Point ToLocalCoordinates(const gfx::Point& point) const; 129 gfx::Point ToLocalCoordinates(const gfx::Point& point) const;
137 130
138 // Called when a guest instance ID has been allocated by the browser process. 131 // Called when a guest instance ID has been allocated by the browser process.
139 void OnInstanceIDAllocated(int guest_instance_id); 132 void OnInstanceIDAllocated(int guest_instance_id);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 // Indicates whether a damage buffer was used by the guest process for the 276 // Indicates whether a damage buffer was used by the guest process for the
284 // provided |params|. 277 // provided |params|.
285 static bool UsesDamageBuffer( 278 static bool UsesDamageBuffer(
286 const BrowserPluginMsg_UpdateRect_Params& params); 279 const BrowserPluginMsg_UpdateRect_Params& params);
287 280
288 // Indicates whether the |pending_damage_buffer_| was used to copy over pixels 281 // Indicates whether the |pending_damage_buffer_| was used to copy over pixels
289 // given the provided |params|. 282 // given the provided |params|.
290 bool UsesPendingDamageBuffer( 283 bool UsesPendingDamageBuffer(
291 const BrowserPluginMsg_UpdateRect_Params& params); 284 const BrowserPluginMsg_UpdateRect_Params& params);
292 285
293 void AddPermissionRequestToSet(int request_id);
294
295 // Informs the BrowserPlugin that the guest's permission request has been
296 // allowed or denied by the embedder.
297 void RespondPermission(int request_id,
298 bool allow,
299 const std::string& user_input);
300
301 // Called when the tracked object of |id| ID becomes unreachable in 286 // Called when the tracked object of |id| ID becomes unreachable in
302 // JavaScript. 287 // JavaScript.
303 void OnTrackedObjectGarbageCollected(int id); 288 void OnTrackedObjectGarbageCollected(int id);
304 // V8 garbage collection callback for |object|. 289 // V8 garbage collection callback for |object|.
305 static void WeakCallbackForTrackedObject(v8::Isolate* isolate, 290 static void WeakCallbackForTrackedObject(v8::Isolate* isolate,
306 v8::Persistent<v8::Value>* object, 291 v8::Persistent<v8::Value>* object,
307 void* param); 292 void* param);
308 293
309 // IPC message handlers. 294 // IPC message handlers.
310 // Please keep in alphabetical order. 295 // Please keep in alphabetical order.
311 void OnAdvanceFocus(int instance_id, bool reverse); 296 void OnAdvanceFocus(int instance_id, bool reverse);
312 void OnAttachACK(int instance_id, 297 void OnAttachACK(int instance_id,
313 const BrowserPluginMsg_Attach_ACK_Params& ack_params); 298 const BrowserPluginMsg_Attach_ACK_Params& ack_params);
314 void OnBuffersSwapped(int instance_id, 299 void OnBuffersSwapped(int instance_id,
315 const BrowserPluginMsg_BuffersSwapped_Params& params); 300 const BrowserPluginMsg_BuffersSwapped_Params& params);
316 void OnCompositorFrameSwapped(const IPC::Message& message); 301 void OnCompositorFrameSwapped(const IPC::Message& message);
317 void OnGuestContentWindowReady(int instance_id, 302 void OnGuestContentWindowReady(int instance_id,
318 int content_window_routing_id); 303 int content_window_routing_id);
319 void OnGuestGone(int instance_id); 304 void OnGuestGone(int instance_id);
320 void OnGuestResponsive(int instance_id, int process_id);
321 void OnGuestUnresponsive(int instance_id, int process_id);
322 // Requests permission from the embedder.
323 void OnRequestPermission(int instance_id,
324 BrowserPluginPermissionType permission_type,
325 int request_id,
326 const base::DictionaryValue& request_info);
327 void OnSetCursor(int instance_id, const WebCursor& cursor); 305 void OnSetCursor(int instance_id, const WebCursor& cursor);
328 void OnSetMouseLock(int instance_id, bool enable); 306 void OnSetMouseLock(int instance_id, bool enable);
329 void OnShouldAcceptTouchEvents(int instance_id, bool accept); 307 void OnShouldAcceptTouchEvents(int instance_id, bool accept);
330 void OnUpdatedName(int instance_id, const std::string& name); 308 void OnUpdatedName(int instance_id, const std::string& name);
331 void OnUpdateRect(int instance_id, 309 void OnUpdateRect(int instance_id,
332 const BrowserPluginMsg_UpdateRect_Params& params); 310 const BrowserPluginMsg_UpdateRect_Params& params);
333 311
334 // This is the browser-process-allocated instance ID that uniquely identifies 312 // This is the browser-process-allocated instance ID that uniquely identifies
335 // a guest WebContents. 313 // a guest WebContents.
336 int guest_instance_id_; 314 int guest_instance_id_;
(...skipping 25 matching lines...) Expand all
362 // embedder RenderView's visibility. 340 // embedder RenderView's visibility.
363 bool visible_; 341 bool visible_;
364 342
365 WebCursor cursor_; 343 WebCursor cursor_;
366 344
367 gfx::Size last_view_size_; 345 gfx::Size last_view_size_;
368 bool size_changed_in_flight_; 346 bool size_changed_in_flight_;
369 bool before_first_navigation_; 347 bool before_first_navigation_;
370 bool mouse_locked_; 348 bool mouse_locked_;
371 349
372 // The set of permission request IDs that have not yet been processed.
373 typedef std::set<int> PendingPermissionRequests;
374 PendingPermissionRequests pending_permission_requests_;
375
376 typedef std::pair<int, base::WeakPtr<BrowserPlugin> > TrackedV8ObjectID; 350 typedef std::pair<int, base::WeakPtr<BrowserPlugin> > TrackedV8ObjectID;
377 std::map<int, TrackedV8ObjectID*> tracked_v8_objects_; 351 std::map<int, TrackedV8ObjectID*> tracked_v8_objects_;
378 352
379 // BrowserPlugin outlives RenderViewImpl in Chrome Apps and so we need to 353 // BrowserPlugin outlives RenderViewImpl in Chrome Apps and so we need to
380 // store the BrowserPlugin's BrowserPluginManager in a member variable to 354 // store the BrowserPlugin's BrowserPluginManager in a member variable to
381 // avoid accessing the RenderViewImpl. 355 // avoid accessing the RenderViewImpl.
382 scoped_refptr<BrowserPluginManager> browser_plugin_manager_; 356 scoped_refptr<BrowserPluginManager> browser_plugin_manager_;
383 357
384 // Used for HW compositing. 358 // Used for HW compositing.
385 bool compositing_enabled_; 359 bool compositing_enabled_;
386 scoped_refptr<BrowserPluginCompositingHelper> compositing_helper_; 360 scoped_refptr<BrowserPluginCompositingHelper> compositing_helper_;
387 361
388 // Used to identify the plugin to WebBindings. 362 // Used to identify the plugin to WebBindings.
389 scoped_ptr<struct _NPP> npp_; 363 scoped_ptr<struct _NPP> npp_;
390 364
391 // Weak factory used in v8 |MakeWeak| callback, since the v8 callback might 365 // Weak factory used in v8 |MakeWeak| callback, since the v8 callback might
392 // get called after BrowserPlugin has been destroyed. 366 // get called after BrowserPlugin has been destroyed.
393 base::WeakPtrFactory<BrowserPlugin> weak_ptr_factory_; 367 base::WeakPtrFactory<BrowserPlugin> weak_ptr_factory_;
394 368
395 std::vector<EditCommand> edit_commands_; 369 std::vector<EditCommand> edit_commands_;
396 370
397 DISALLOW_COPY_AND_ASSIGN(BrowserPlugin); 371 DISALLOW_COPY_AND_ASSIGN(BrowserPlugin);
398 }; 372 };
399 373
400 } // namespace content 374 } // namespace content
401 375
402 #endif // CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_ 376 #endif // CONTENT_RENDERER_BROWSER_PLUGIN_BROWSER_PLUGIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698