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

Side by Side Diff: chrome/renderer/render_view.h

Issue 6312004: Make BlockedPlugin implement RenderViewObserver so that RenderView doesn't ha... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/custom_menu_listener.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 CHROME_RENDERER_RENDER_VIEW_H_ 5 #ifndef CHROME_RENDERER_RENDER_VIEW_H_
6 #define CHROME_RENDERER_RENDER_VIEW_H_ 6 #define CHROME_RENDERER_RENDER_VIEW_H_
7 #pragma once 7 #pragma once
8 8
9 #include <deque> 9 #include <deque>
10 #include <map> 10 #include <map>
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 #if defined(OS_WIN) 51 #if defined(OS_WIN)
52 // RenderView is a diamond-shaped hierarchy, with WebWidgetClient at the root. 52 // RenderView is a diamond-shaped hierarchy, with WebWidgetClient at the root.
53 // VS warns when we inherit the WebWidgetClient method implementations from 53 // VS warns when we inherit the WebWidgetClient method implementations from
54 // RenderWidget. It's safe to ignore that warning. 54 // RenderWidget. It's safe to ignore that warning.
55 #pragma warning(disable: 4250) 55 #pragma warning(disable: 4250)
56 #endif 56 #endif
57 57
58 class AudioMessageFilter; 58 class AudioMessageFilter;
59 class BlockedPlugin; 59 class BlockedPlugin;
60 class CustomMenuListener;
61 class DictionaryValue; 60 class DictionaryValue;
62 class DeviceOrientationDispatcher; 61 class DeviceOrientationDispatcher;
63 class DevToolsAgent; 62 class DevToolsAgent;
64 class DevToolsClient; 63 class DevToolsClient;
65 class DomAutomationController; 64 class DomAutomationController;
66 class DOMUIBindings; 65 class DOMUIBindings;
67 class ExternalHostBindings; 66 class ExternalHostBindings;
68 class FilePath; 67 class FilePath;
69 class GeolocationDispatcher; 68 class GeolocationDispatcher;
70 class GeolocationDispatcherOld; 69 class GeolocationDispatcherOld;
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 // Create a new plugin without checking the content settings. 344 // Create a new plugin without checking the content settings.
346 WebKit::WebPlugin* CreatePluginNoCheck(WebKit::WebFrame* frame, 345 WebKit::WebPlugin* CreatePluginNoCheck(WebKit::WebFrame* frame,
347 const WebKit::WebPluginParams& params); 346 const WebKit::WebPluginParams& params);
348 347
349 // Asks the browser for the CPBrowsingContext associated with this renderer. 348 // Asks the browser for the CPBrowsingContext associated with this renderer.
350 // This is an opaque identifier associated with the renderer for sending 349 // This is an opaque identifier associated with the renderer for sending
351 // messages for the given "Chrome Plugin." The Chrome Plugin API is used 350 // messages for the given "Chrome Plugin." The Chrome Plugin API is used
352 // only by gears and this function can be deleted when we remove gears. 351 // only by gears and this function can be deleted when we remove gears.
353 uint32 GetCPBrowsingContext(); 352 uint32 GetCPBrowsingContext();
354 353
355 // Handles registering and deregistering customer handlers for custom
356 // context menu events.
357 // To install a custom context menu, call showContextMenu() with your
358 // custom entries, followed immediately by CustomMenuListenerInstall() to
359 // register a listener for when a custom menu item is selected. Note that
360 // subsequent calls to showContextMenu() will clear the custom listener.
361 void CustomMenuListenerInstall(CustomMenuListener* listening);
362 void CustomMenuListenerDestroyed(CustomMenuListener* dead);
363
364 #if defined(OS_MACOSX) 354 #if defined(OS_MACOSX)
365 // Enables/disabled plugin IME for the given plugin. 355 // Enables/disabled plugin IME for the given plugin.
366 void SetPluginImeEnabled(bool enabled, int plugin_id); 356 void SetPluginImeEnabled(bool enabled, int plugin_id);
367 357
368 // Helper routines for accelerated plugin support. Used by the 358 // Helper routines for accelerated plugin support. Used by the
369 // WebPluginDelegateProxy, which has a pointer to the RenderView. 359 // WebPluginDelegateProxy, which has a pointer to the RenderView.
370 gfx::PluginWindowHandle AllocateFakePluginWindowHandle(bool opaque, 360 gfx::PluginWindowHandle AllocateFakePluginWindowHandle(bool opaque,
371 bool root); 361 bool root);
372 void DestroyFakePluginWindowHandle(gfx::PluginWindowHandle window); 362 void DestroyFakePluginWindowHandle(gfx::PluginWindowHandle window);
373 void AcceleratedSurfaceSetIOSurface(gfx::PluginWindowHandle window, 363 void AcceleratedSurfaceSetIOSurface(gfx::PluginWindowHandle window,
374 int32 width, 364 int32 width,
375 int32 height, 365 int32 height,
376 uint64 io_surface_identifier); 366 uint64 io_surface_identifier);
377 TransportDIB::Handle AcceleratedSurfaceAllocTransportDIB(size_t size); 367 TransportDIB::Handle AcceleratedSurfaceAllocTransportDIB(size_t size);
378 void AcceleratedSurfaceFreeTransportDIB(TransportDIB::Id dib_id); 368 void AcceleratedSurfaceFreeTransportDIB(TransportDIB::Id dib_id);
379 void AcceleratedSurfaceSetTransportDIB(gfx::PluginWindowHandle window, 369 void AcceleratedSurfaceSetTransportDIB(gfx::PluginWindowHandle window,
380 int32 width, 370 int32 width,
381 int32 height, 371 int32 height,
382 TransportDIB::Handle transport_dib); 372 TransportDIB::Handle transport_dib);
383 void AcceleratedSurfaceBuffersSwapped(gfx::PluginWindowHandle window, 373 void AcceleratedSurfaceBuffersSwapped(gfx::PluginWindowHandle window,
384 uint64 surface_id); 374 uint64 surface_id);
385 #endif 375 #endif
386 376
387 void RegisterPluginDelegate(WebPluginDelegateProxy* delegate); 377 void RegisterPluginDelegate(WebPluginDelegateProxy* delegate);
388 void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate); 378 void UnregisterPluginDelegate(WebPluginDelegateProxy* delegate);
389 379
390 void RegisterBlockedPlugin(BlockedPlugin* blocked_plugin);
391 void UnregisterBlockedPlugin(BlockedPlugin* blocked_plugin);
392
393 // IPC::Channel::Listener implementation ------------------------------------- 380 // IPC::Channel::Listener implementation -------------------------------------
394 381
395 virtual bool OnMessageReceived(const IPC::Message& msg); 382 virtual bool OnMessageReceived(const IPC::Message& msg);
396 383
397 // WebKit::WebWidgetClient implementation ------------------------------------ 384 // WebKit::WebWidgetClient implementation ------------------------------------
398 385
399 // Most methods are handled by RenderWidget. 386 // Most methods are handled by RenderWidget.
400 virtual void didFocus(); 387 virtual void didFocus();
401 virtual void didBlur(); 388 virtual void didBlur();
402 virtual void show(WebKit::WebNavigationPolicy policy); 389 virtual void show(WebKit::WebNavigationPolicy policy);
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url); 872 void OnGetAllSavableResourceLinksForCurrentPage(const GURL& page_url);
886 void OnGetApplicationInfo(int page_id); 873 void OnGetApplicationInfo(int page_id);
887 void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks( 874 void OnGetSerializedHtmlDataForCurrentPageWithLocalLinks(
888 const std::vector<GURL>& links, 875 const std::vector<GURL>& links,
889 const std::vector<FilePath>& local_paths, 876 const std::vector<FilePath>& local_paths,
890 const FilePath& local_directory_name); 877 const FilePath& local_directory_name);
891 void OnHandleMessageFromExternalHost(const std::string& message, 878 void OnHandleMessageFromExternalHost(const std::string& message,
892 const std::string& origin, 879 const std::string& origin,
893 const std::string& target); 880 const std::string& target);
894 void OnInstallMissingPlugin(); 881 void OnInstallMissingPlugin();
895 void OnLoadBlockedPlugins();
896 void OnMediaPlayerActionAt(const gfx::Point& location, 882 void OnMediaPlayerActionAt(const gfx::Point& location,
897 const WebKit::WebMediaPlayerAction& action); 883 const WebKit::WebMediaPlayerAction& action);
898 void OnMoveOrResizeStarted(); 884 void OnMoveOrResizeStarted();
899 void OnNavigate(const ViewMsg_Navigate_Params& params); 885 void OnNavigate(const ViewMsg_Navigate_Params& params);
900 void OnNotifyRendererViewType(ViewType::Type view_type); 886 void OnNotifyRendererViewType(ViewType::Type view_type);
901 void OnPaste(); 887 void OnPaste();
902 #if defined(OS_MACOSX) 888 #if defined(OS_MACOSX)
903 void OnPluginImeCompositionConfirmed(const string16& text, int plugin_id); 889 void OnPluginImeCompositionConfirmed(const string16& text, int plugin_id);
904 #endif 890 #endif
905 void OnPrintingDone(int document_cookie, bool success); 891 void OnPrintingDone(int document_cookie, bool success);
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 1311
1326 // All the currently active plugin delegates for this RenderView; kept so that 1312 // All the currently active plugin delegates for this RenderView; kept so that
1327 // we can enumerate them to send updates about things like window location 1313 // we can enumerate them to send updates about things like window location
1328 // or tab focus and visibily. These are non-owning references. 1314 // or tab focus and visibily. These are non-owning references.
1329 std::set<WebPluginDelegateProxy*> plugin_delegates_; 1315 std::set<WebPluginDelegateProxy*> plugin_delegates_;
1330 1316
1331 // A list of all Pepper v1 plugins that we've created that haven't been 1317 // A list of all Pepper v1 plugins that we've created that haven't been
1332 // destroyed yet. Pepper v2 plugins are tracked by the pepper_delegate_. 1318 // destroyed yet. Pepper v2 plugins are tracked by the pepper_delegate_.
1333 std::set<WebPluginDelegatePepper*> current_oldstyle_pepper_plugins_; 1319 std::set<WebPluginDelegatePepper*> current_oldstyle_pepper_plugins_;
1334 1320
1335 // A list of all BlockedPlugins so they can all be loaded if needed.
1336 std::set<BlockedPlugin*> blocked_plugins_;
1337
1338 // Helper objects ------------------------------------------------------------ 1321 // Helper objects ------------------------------------------------------------
1339 1322
1340 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_; 1323 ScopedRunnableMethodFactory<RenderView> page_info_method_factory_;
1341 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_; 1324 ScopedRunnableMethodFactory<RenderView> accessibility_method_factory_;
1342 1325
1343 // Responsible for translating the page contents to other languages. 1326 // Responsible for translating the page contents to other languages.
1344 TranslateHelper translate_helper_; 1327 TranslateHelper translate_helper_;
1345 1328
1346 RendererWebCookieJarImpl cookie_jar_; 1329 RendererWebCookieJarImpl cookie_jar_;
1347 1330
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 // Allows DOM UI pages (new tab page, etc.) to talk to the browser. The JS 1441 // Allows DOM UI pages (new tab page, etc.) to talk to the browser. The JS
1459 // object is only exposed when DOM UI bindings are enabled. 1442 // object is only exposed when DOM UI bindings are enabled.
1460 scoped_ptr<DOMUIBindings> dom_ui_bindings_; 1443 scoped_ptr<DOMUIBindings> dom_ui_bindings_;
1461 1444
1462 // External host exposed through automation controller. 1445 // External host exposed through automation controller.
1463 scoped_ptr<ExternalHostBindings> external_host_bindings_; 1446 scoped_ptr<ExternalHostBindings> external_host_bindings_;
1464 1447
1465 // The external popup for the currently showing select popup. 1448 // The external popup for the currently showing select popup.
1466 scoped_ptr<ExternalPopupMenu> external_popup_menu_; 1449 scoped_ptr<ExternalPopupMenu> external_popup_menu_;
1467 1450
1468 // The custom menu event listener, if any.
1469 CustomMenuListener* custom_menu_listener_;
1470
1471 // The node that the context menu was pressed over. 1451 // The node that the context menu was pressed over.
1472 WebKit::WebNode context_menu_node_; 1452 WebKit::WebNode context_menu_node_;
1473 1453
1474 // Reports load progress to the browser. 1454 // Reports load progress to the browser.
1475 scoped_ptr<LoadProgressTracker> load_progress_tracker_; 1455 scoped_ptr<LoadProgressTracker> load_progress_tracker_;
1476 1456
1477 // All the registered observers. We expect this list to be small, so vector 1457 // All the registered observers. We expect this list to be small, so vector
1478 // is fine. 1458 // is fine.
1479 ObserverList<RenderViewObserver> observers_; 1459 ObserverList<RenderViewObserver> observers_;
1480 1460
1481 // --------------------------------------------------------------------------- 1461 // ---------------------------------------------------------------------------
1482 // ADDING NEW DATA? Please see if it fits appropriately in one of the above 1462 // ADDING NEW DATA? Please see if it fits appropriately in one of the above
1483 // sections rather than throwing it randomly at the end. If you're adding a 1463 // sections rather than throwing it randomly at the end. If you're adding a
1484 // bunch of stuff, you should probably create a helper class and put your 1464 // bunch of stuff, you should probably create a helper class and put your
1485 // data and methods on that to avoid bloating RenderView more. You can use 1465 // data and methods on that to avoid bloating RenderView more. You can use
1486 // the Observer interface to filter IPC messages and receive frame change 1466 // the Observer interface to filter IPC messages and receive frame change
1487 // notifications. 1467 // notifications.
1488 // --------------------------------------------------------------------------- 1468 // ---------------------------------------------------------------------------
1489 1469
1490 DISALLOW_COPY_AND_ASSIGN(RenderView); 1470 DISALLOW_COPY_AND_ASSIGN(RenderView);
1491 }; 1471 };
1492 1472
1493 #endif // CHROME_RENDERER_RENDER_VIEW_H_ 1473 #endif // CHROME_RENDERER_RENDER_VIEW_H_
OLDNEW
« no previous file with comments | « chrome/renderer/custom_menu_listener.h ('k') | chrome/renderer/render_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698