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

Side by Side Diff: content/renderer/pepper/pepper_plugin_instance_impl.h

Issue 1873783003: Convert //content/renderer from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_ 5 #ifndef CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_
6 #define CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_ 6 #define CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <list> 11 #include <list>
12 #include <memory>
12 #include <set> 13 #include <set>
13 #include <string> 14 #include <string>
14 #include <vector> 15 #include <vector>
15 16
16 #include "base/callback.h" 17 #include "base/callback.h"
17 #include "base/compiler_specific.h" 18 #include "base/compiler_specific.h"
18 #include "base/macros.h" 19 #include "base/macros.h"
19 #include "base/memory/ref_counted.h" 20 #include "base/memory/ref_counted.h"
20 #include "base/memory/scoped_ptr.h"
21 #include "base/memory/weak_ptr.h" 21 #include "base/memory/weak_ptr.h"
22 #include "base/strings/string16.h" 22 #include "base/strings/string16.h"
23 #include "build/build_config.h" 23 #include "build/build_config.h"
24 #include "cc/layers/content_layer_client.h" 24 #include "cc/layers/content_layer_client.h"
25 #include "cc/layers/layer.h" 25 #include "cc/layers/layer.h"
26 #include "cc/layers/texture_layer_client.h" 26 #include "cc/layers/texture_layer_client.h"
27 #include "content/common/content_export.h" 27 #include "content/common/content_export.h"
28 #include "content/public/renderer/pepper_plugin_instance.h" 28 #include "content/public/renderer/pepper_plugin_instance.h"
29 #include "content/public/renderer/plugin_instance_throttler.h" 29 #include "content/public/renderer/plugin_instance_throttler.h"
30 #include "content/public/renderer/render_frame.h" 30 #include "content/public/renderer/render_frame.h"
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 void InstanceCrashed(); 205 void InstanceCrashed();
206 206
207 // PPB_Instance and PPB_Instance_Private implementation. 207 // PPB_Instance and PPB_Instance_Private implementation.
208 bool full_frame() const { return full_frame_; } 208 bool full_frame() const { return full_frame_; }
209 const ppapi::ViewData& view_data() const { return view_data_; } 209 const ppapi::ViewData& view_data() const { return view_data_; }
210 210
211 // PPP_Instance and PPP_Instance_Private. 211 // PPP_Instance and PPP_Instance_Private.
212 bool Initialize(const std::vector<std::string>& arg_names, 212 bool Initialize(const std::vector<std::string>& arg_names,
213 const std::vector<std::string>& arg_values, 213 const std::vector<std::string>& arg_values,
214 bool full_frame, 214 bool full_frame,
215 scoped_ptr<PluginInstanceThrottlerImpl> throttler); 215 std::unique_ptr<PluginInstanceThrottlerImpl> throttler);
216 bool HandleDocumentLoad(const blink::WebURLResponse& response); 216 bool HandleDocumentLoad(const blink::WebURLResponse& response);
217 bool HandleInputEvent(const blink::WebInputEvent& event, 217 bool HandleInputEvent(const blink::WebInputEvent& event,
218 blink::WebCursorInfo* cursor_info); 218 blink::WebCursorInfo* cursor_info);
219 PP_Var GetInstanceObject(v8::Isolate* isolate); 219 PP_Var GetInstanceObject(v8::Isolate* isolate);
220 void ViewChanged(const gfx::Rect& window, 220 void ViewChanged(const gfx::Rect& window,
221 const gfx::Rect& clip, 221 const gfx::Rect& clip,
222 const gfx::Rect& unobscured, 222 const gfx::Rect& unobscured,
223 const std::vector<gfx::Rect>& cut_outs_rects); 223 const std::vector<gfx::Rect>& cut_outs_rects);
224 224
225 // Handlers for composition events. 225 // Handlers for composition events.
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 // Checks whether this is a valid instance of the given module. After calling 528 // Checks whether this is a valid instance of the given module. After calling
529 // ResetAsProxied above, a NaCl plugin instance's module changes, so external 529 // ResetAsProxied above, a NaCl plugin instance's module changes, so external
530 // hosts won't recognize it as a valid instance of the original module. This 530 // hosts won't recognize it as a valid instance of the original module. This
531 // method fixes that be checking that either module_ or original_module_ match 531 // method fixes that be checking that either module_ or original_module_ match
532 // the given module. 532 // the given module.
533 bool IsValidInstanceOf(PluginModule* module); 533 bool IsValidInstanceOf(PluginModule* module);
534 534
535 // cc::TextureLayerClient implementation. 535 // cc::TextureLayerClient implementation.
536 bool PrepareTextureMailbox( 536 bool PrepareTextureMailbox(
537 cc::TextureMailbox* mailbox, 537 cc::TextureMailbox* mailbox,
538 scoped_ptr<cc::SingleReleaseCallback>* release_callback, 538 std::unique_ptr<cc::SingleReleaseCallback>* release_callback,
539 bool use_shared_memory) override; 539 bool use_shared_memory) override;
540 540
541 // RenderFrameObserver 541 // RenderFrameObserver
542 void OnDestruct() override; 542 void OnDestruct() override;
543 543
544 // PluginInstanceThrottler::Observer 544 // PluginInstanceThrottler::Observer
545 void OnThrottleStateChange() override; 545 void OnThrottleStateChange() override;
546 void OnHiddenForPlaceholder(bool hidden) override; 546 void OnHiddenForPlaceholder(bool hidden) override;
547 547
548 private: 548 private:
(...skipping 20 matching lines...) Expand all
569 int encoded_data_length) override; 569 int encoded_data_length) override;
570 void didFinishLoading(blink::WebURLLoader* loader, 570 void didFinishLoading(blink::WebURLLoader* loader,
571 double finish_time, 571 double finish_time,
572 int64_t total_encoded_data_length) override; 572 int64_t total_encoded_data_length) override;
573 void didFail(blink::WebURLLoader* loader, 573 void didFail(blink::WebURLLoader* loader,
574 const blink::WebURLError& error) override; 574 const blink::WebURLError& error) override;
575 575
576 private: 576 private:
577 std::list<std::string> data_; 577 std::list<std::string> data_;
578 bool finished_loading_; 578 bool finished_loading_;
579 scoped_ptr<blink::WebURLError> error_; 579 std::unique_ptr<blink::WebURLError> error_;
580 }; 580 };
581 581
582 // Implements PPB_Gamepad_API. This is just to avoid having an excessive 582 // Implements PPB_Gamepad_API. This is just to avoid having an excessive
583 // number of interfaces implemented by PepperPluginInstanceImpl. 583 // number of interfaces implemented by PepperPluginInstanceImpl.
584 class GamepadImpl : public ppapi::thunk::PPB_Gamepad_API, 584 class GamepadImpl : public ppapi::thunk::PPB_Gamepad_API,
585 public ppapi::Resource { 585 public ppapi::Resource {
586 public: 586 public:
587 GamepadImpl(); 587 GamepadImpl();
588 // Resource implementation. 588 // Resource implementation.
589 ppapi::thunk::PPB_Gamepad_API* AsPPB_Gamepad_API() override; 589 ppapi::thunk::PPB_Gamepad_API* AsPPB_Gamepad_API() override;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 695
696 void RecordFlashJavaScriptUse(); 696 void RecordFlashJavaScriptUse();
697 697
698 // Converts the PP_Rect between DIP and Viewport. 698 // Converts the PP_Rect between DIP and Viewport.
699 void ConvertRectToDIP(PP_Rect* rect) const; 699 void ConvertRectToDIP(PP_Rect* rect) const;
700 void ConvertDIPToViewport(gfx::Rect* rect) const; 700 void ConvertDIPToViewport(gfx::Rect* rect) const;
701 701
702 RenderFrameImpl* render_frame_; 702 RenderFrameImpl* render_frame_;
703 base::Closure instance_deleted_callback_; 703 base::Closure instance_deleted_callback_;
704 scoped_refptr<PluginModule> module_; 704 scoped_refptr<PluginModule> module_;
705 scoped_ptr<ppapi::PPP_Instance_Combined> instance_interface_; 705 std::unique_ptr<ppapi::PPP_Instance_Combined> instance_interface_;
706 // If this is the NaCl plugin, we create a new module when we switch to the 706 // If this is the NaCl plugin, we create a new module when we switch to the
707 // IPC-based PPAPI proxy. Store the original module and instance interface 707 // IPC-based PPAPI proxy. Store the original module and instance interface
708 // so we can shut down properly. 708 // so we can shut down properly.
709 scoped_refptr<PluginModule> original_module_; 709 scoped_refptr<PluginModule> original_module_;
710 scoped_ptr<ppapi::PPP_Instance_Combined> original_instance_interface_; 710 std::unique_ptr<ppapi::PPP_Instance_Combined> original_instance_interface_;
711 711
712 PP_Instance pp_instance_; 712 PP_Instance pp_instance_;
713 713
714 // NULL until we have been initialized. 714 // NULL until we have been initialized.
715 blink::WebPluginContainer* container_; 715 blink::WebPluginContainer* container_;
716 scoped_refptr<cc::Layer> compositor_layer_; 716 scoped_refptr<cc::Layer> compositor_layer_;
717 scoped_refptr<cc::TextureLayer> texture_layer_; 717 scoped_refptr<cc::TextureLayer> texture_layer_;
718 scoped_ptr<blink::WebLayer> web_layer_; 718 std::unique_ptr<blink::WebLayer> web_layer_;
719 bool layer_bound_to_fullscreen_; 719 bool layer_bound_to_fullscreen_;
720 bool layer_is_hardware_; 720 bool layer_is_hardware_;
721 721
722 // Plugin URL. 722 // Plugin URL.
723 const GURL plugin_url_; 723 const GURL plugin_url_;
724 724
725 GURL document_url_; 725 GURL document_url_;
726 726
727 // Used to track Flash-specific metrics. 727 // Used to track Flash-specific metrics.
728 const bool is_flash_plugin_; 728 const bool is_flash_plugin_;
729 729
730 // Set to true the first time the plugin is clicked. Used to collect metrics. 730 // Set to true the first time the plugin is clicked. Used to collect metrics.
731 bool has_been_clicked_; 731 bool has_been_clicked_;
732 732
733 // Used to track if JavaScript has ever been used for this plugin instance. 733 // Used to track if JavaScript has ever been used for this plugin instance.
734 bool javascript_used_; 734 bool javascript_used_;
735 735
736 // Responsible for turning on throttling if Power Saver is on. 736 // Responsible for turning on throttling if Power Saver is on.
737 scoped_ptr<PluginInstanceThrottlerImpl> throttler_; 737 std::unique_ptr<PluginInstanceThrottlerImpl> throttler_;
738 738
739 // Indicates whether this is a full frame instance, which means it represents 739 // Indicates whether this is a full frame instance, which means it represents
740 // an entire document rather than an embed tag. 740 // an entire document rather than an embed tag.
741 bool full_frame_; 741 bool full_frame_;
742 742
743 // Stores the current state of the plugin view. 743 // Stores the current state of the plugin view.
744 ppapi::ViewData view_data_; 744 ppapi::ViewData view_data_;
745 // The last state sent to the plugin. It is only valid after 745 // The last state sent to the plugin. It is only valid after
746 // |sent_initial_did_change_view_| is set to true. 746 // |sent_initial_did_change_view_| is set to true.
747 ppapi::ViewData last_sent_view_data_; 747 ppapi::ViewData last_sent_view_data_;
(...skipping 16 matching lines...) Expand all
764 // all elements of the page, one one from the browser, which is whether the 764 // all elements of the page, one one from the browser, which is whether the
765 // tab/window has focus. We tell the plugin it has focus only when both of 765 // tab/window has focus. We tell the plugin it has focus only when both of
766 // these values are set to true. 766 // these values are set to true.
767 bool has_webkit_focus_; 767 bool has_webkit_focus_;
768 bool has_content_area_focus_; 768 bool has_content_area_focus_;
769 769
770 // The id of the current find operation, or -1 if none is in process. 770 // The id of the current find operation, or -1 if none is in process.
771 int find_identifier_; 771 int find_identifier_;
772 772
773 // Helper object that creates resources. 773 // Helper object that creates resources.
774 scoped_ptr<ppapi::thunk::ResourceCreationAPI> resource_creation_; 774 std::unique_ptr<ppapi::thunk::ResourceCreationAPI> resource_creation_;
775 775
776 // The plugin-provided interfaces. 776 // The plugin-provided interfaces.
777 // When adding PPP interfaces, make sure to reset them in ResetAsProxied. 777 // When adding PPP interfaces, make sure to reset them in ResetAsProxied.
778 const PPP_Find_Private* plugin_find_interface_; 778 const PPP_Find_Private* plugin_find_interface_;
779 const PPP_InputEvent* plugin_input_event_interface_; 779 const PPP_InputEvent* plugin_input_event_interface_;
780 const PPP_MouseLock* plugin_mouse_lock_interface_; 780 const PPP_MouseLock* plugin_mouse_lock_interface_;
781 const PPP_Pdf* plugin_pdf_interface_; 781 const PPP_Pdf* plugin_pdf_interface_;
782 const PPP_Instance_Private* plugin_private_interface_; 782 const PPP_Instance_Private* plugin_private_interface_;
783 const PPP_TextInput_Dev* plugin_textinput_interface_; 783 const PPP_TextInput_Dev* plugin_textinput_interface_;
784 784
(...skipping 28 matching lines...) Expand all
813 scoped_refptr<ppapi::Resource> gamepad_impl_; 813 scoped_refptr<ppapi::Resource> gamepad_impl_;
814 scoped_refptr<ppapi::Resource> uma_private_impl_; 814 scoped_refptr<ppapi::Resource> uma_private_impl_;
815 815
816 // The plugin print interface. 816 // The plugin print interface.
817 const PPP_Printing_Dev* plugin_print_interface_; 817 const PPP_Printing_Dev* plugin_print_interface_;
818 818
819 // The plugin 3D interface. 819 // The plugin 3D interface.
820 const PPP_Graphics3D* plugin_graphics_3d_interface_; 820 const PPP_Graphics3D* plugin_graphics_3d_interface_;
821 821
822 // Contains the cursor if it's set by the plugin. 822 // Contains the cursor if it's set by the plugin.
823 scoped_ptr<blink::WebCursorInfo> cursor_; 823 std::unique_ptr<blink::WebCursorInfo> cursor_;
824 824
825 // Set to true if this plugin thinks it will always be on top. This allows us 825 // Set to true if this plugin thinks it will always be on top. This allows us
826 // to use a more optimized painting path in some cases. 826 // to use a more optimized painting path in some cases.
827 bool always_on_top_; 827 bool always_on_top_;
828 // Even if |always_on_top_| is true, the plugin is not fully visible if there 828 // Even if |always_on_top_| is true, the plugin is not fully visible if there
829 // are some cut-out areas (occupied by iframes higher in the stacking order). 829 // are some cut-out areas (occupied by iframes higher in the stacking order).
830 // This information is used in the optimized painting path. 830 // This information is used in the optimized painting path.
831 std::vector<gfx::Rect> cut_outs_rects_; 831 std::vector<gfx::Rect> cut_outs_rects_;
832 832
833 // Implementation of PPB_FlashFullscreen. 833 // Implementation of PPB_FlashFullscreen.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 898
899 // We store the arguments so we can re-send them if we are reset to talk to 899 // We store the arguments so we can re-send them if we are reset to talk to
900 // NaCl via the IPC NaCl proxy. 900 // NaCl via the IPC NaCl proxy.
901 std::vector<std::string> argn_; 901 std::vector<std::string> argn_;
902 std::vector<std::string> argv_; 902 std::vector<std::string> argv_;
903 903
904 // Non-owning pointer to the document loader, if any. 904 // Non-owning pointer to the document loader, if any.
905 blink::WebURLLoaderClient* document_loader_; 905 blink::WebURLLoaderClient* document_loader_;
906 // State for deferring document loads. Used only by external instances. 906 // State for deferring document loads. Used only by external instances.
907 blink::WebURLResponse external_document_response_; 907 blink::WebURLResponse external_document_response_;
908 scoped_ptr<ExternalDocumentLoader> external_document_loader_; 908 std::unique_ptr<ExternalDocumentLoader> external_document_loader_;
909 bool external_document_load_; 909 bool external_document_load_;
910 910
911 // The ContentDecryptorDelegate forwards PPP_ContentDecryptor_Private 911 // The ContentDecryptorDelegate forwards PPP_ContentDecryptor_Private
912 // calls and handles PPB_ContentDecryptor_Private calls. 912 // calls and handles PPB_ContentDecryptor_Private calls.
913 scoped_ptr<ContentDecryptorDelegate> content_decryptor_delegate_; 913 std::unique_ptr<ContentDecryptorDelegate> content_decryptor_delegate_;
914 914
915 // The link currently under the cursor. 915 // The link currently under the cursor.
916 base::string16 link_under_cursor_; 916 base::string16 link_under_cursor_;
917 917
918 // We store the isolate at construction so that we can be sure to use the 918 // We store the isolate at construction so that we can be sure to use the
919 // Isolate in which this Instance was created when interacting with v8. 919 // Isolate in which this Instance was created when interacting with v8.
920 v8::Isolate* isolate_; 920 v8::Isolate* isolate_;
921 921
922 scoped_ptr<MouseLockDispatcher::LockTarget> lock_target_; 922 std::unique_ptr<MouseLockDispatcher::LockTarget> lock_target_;
923 923
924 bool is_deleted_; 924 bool is_deleted_;
925 925
926 // The text that is currently selected in the plugin. 926 // The text that is currently selected in the plugin.
927 base::string16 selected_text_; 927 base::string16 selected_text_;
928 928
929 bool initialized_; 929 bool initialized_;
930 930
931 // We use a weak ptr factory for scheduling DidChangeView events so that we 931 // We use a weak ptr factory for scheduling DidChangeView events so that we
932 // can tell whether updates are pending and consolidate them. When there's 932 // can tell whether updates are pending and consolidate them. When there's
933 // already a weak ptr pending (HasWeakPtrs is true), code should update the 933 // already a weak ptr pending (HasWeakPtrs is true), code should update the
934 // view_data_ but not send updates. This also allows us to cancel scheduled 934 // view_data_ but not send updates. This also allows us to cancel scheduled
935 // view change events. 935 // view change events.
936 base::WeakPtrFactory<PepperPluginInstanceImpl> view_change_weak_ptr_factory_; 936 base::WeakPtrFactory<PepperPluginInstanceImpl> view_change_weak_ptr_factory_;
937 base::WeakPtrFactory<PepperPluginInstanceImpl> weak_factory_; 937 base::WeakPtrFactory<PepperPluginInstanceImpl> weak_factory_;
938 938
939 DISALLOW_COPY_AND_ASSIGN(PepperPluginInstanceImpl); 939 DISALLOW_COPY_AND_ASSIGN(PepperPluginInstanceImpl);
940 }; 940 };
941 941
942 } // namespace content 942 } // namespace content
943 943
944 #endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_ 944 #endif // CONTENT_RENDERER_PEPPER_PEPPER_PLUGIN_INSTANCE_IMPL_H_
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_platform_video_capture.h ('k') | content/renderer/pepper/pepper_plugin_instance_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698