| Index: webkit/plugins/ppapi/ppapi_plugin_instance_impl.cc
|
| ===================================================================
|
| --- webkit/plugins/ppapi/ppapi_plugin_instance_impl.cc (revision 213350)
|
| +++ webkit/plugins/ppapi/ppapi_plugin_instance_impl.cc (working copy)
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
|
| +#include "webkit/plugins/ppapi/ppapi_plugin_instance_impl.h"
|
|
|
| #include "base/bind.h"
|
| #include "base/callback_helpers.h"
|
| @@ -293,7 +293,7 @@
|
| // unchanged.
|
| bool SecurityOriginForInstance(PP_Instance instance_id,
|
| WebKit::WebSecurityOrigin* security_origin) {
|
| - PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
|
| + PluginInstanceImpl* instance = HostGlobals::Get()->GetInstance(instance_id);
|
| if (!instance)
|
| return false;
|
|
|
| @@ -316,29 +316,29 @@
|
| } // namespace
|
|
|
| // static
|
| -PluginInstance* PluginInstance::Create(PluginDelegate* delegate,
|
| - content::RenderView* render_view,
|
| - PluginModule* module,
|
| - WebPluginContainer* container,
|
| - const GURL& plugin_url) {
|
| +PluginInstanceImpl* PluginInstanceImpl::Create(PluginDelegate* delegate,
|
| + content::RenderView* render_view,
|
| + PluginModule* module,
|
| + WebPluginContainer* container,
|
| + const GURL& plugin_url) {
|
| base::Callback<const void*(const char*)> get_plugin_interface_func =
|
| base::Bind(&PluginModule::GetPluginInterface, module);
|
| PPP_Instance_Combined* ppp_instance_combined =
|
| PPP_Instance_Combined::Create(get_plugin_interface_func);
|
| if (!ppp_instance_combined)
|
| return NULL;
|
| - return new PluginInstance(delegate, render_view, module,
|
| - ppp_instance_combined, container, plugin_url);
|
| + return new PluginInstanceImpl(delegate, render_view, module,
|
| + ppp_instance_combined, container, plugin_url);
|
| }
|
|
|
| -PluginInstance::NaClDocumentLoader::NaClDocumentLoader()
|
| +PluginInstanceImpl::NaClDocumentLoader::NaClDocumentLoader()
|
| : finished_loading_(false) {
|
| }
|
|
|
| -PluginInstance::NaClDocumentLoader::~NaClDocumentLoader(){
|
| +PluginInstanceImpl::NaClDocumentLoader::~NaClDocumentLoader(){
|
| }
|
|
|
| -void PluginInstance::NaClDocumentLoader::ReplayReceivedData(
|
| +void PluginInstanceImpl::NaClDocumentLoader::ReplayReceivedData(
|
| WebURLLoaderClient* document_loader) {
|
| for (std::list<std::string>::iterator it = data_.begin();
|
| it != data_.end(); ++it) {
|
| @@ -354,7 +354,7 @@
|
| }
|
| }
|
|
|
| -void PluginInstance::NaClDocumentLoader::didReceiveData(
|
| +void PluginInstanceImpl::NaClDocumentLoader::didReceiveData(
|
| WebURLLoader* loader,
|
| const char* data,
|
| int data_length,
|
| @@ -362,38 +362,38 @@
|
| data_.push_back(std::string(data, data_length));
|
| }
|
|
|
| -void PluginInstance::NaClDocumentLoader::didFinishLoading(
|
| +void PluginInstanceImpl::NaClDocumentLoader::didFinishLoading(
|
| WebURLLoader* loader,
|
| double finish_time) {
|
| DCHECK(!finished_loading_);
|
| finished_loading_ = true;
|
| }
|
|
|
| -void PluginInstance::NaClDocumentLoader::didFail(
|
| +void PluginInstanceImpl::NaClDocumentLoader::didFail(
|
| WebURLLoader* loader,
|
| const WebURLError& error) {
|
| DCHECK(!error_.get());
|
| error_.reset(new WebURLError(error));
|
| }
|
|
|
| -PluginInstance::GamepadImpl::GamepadImpl(PluginDelegate* delegate)
|
| +PluginInstanceImpl::GamepadImpl::GamepadImpl(PluginDelegate* delegate)
|
| : Resource(::ppapi::Resource::Untracked()),
|
| delegate_(delegate) {
|
| }
|
|
|
| -PPB_Gamepad_API* PluginInstance::GamepadImpl::AsPPB_Gamepad_API() {
|
| +PPB_Gamepad_API* PluginInstanceImpl::GamepadImpl::AsPPB_Gamepad_API() {
|
| return this;
|
| }
|
|
|
| -void PluginInstance::GamepadImpl::Sample(PP_Instance /* instance */,
|
| - PP_GamepadsSampleData* data) {
|
| +void PluginInstanceImpl::GamepadImpl::Sample(PP_Instance instance,
|
| + PP_GamepadsSampleData* data) {
|
| WebKit::WebGamepads webkit_data;
|
| delegate_->SampleGamepads(&webkit_data);
|
| ConvertWebKitGamepadData(
|
| *reinterpret_cast<const ::ppapi::WebKitGamepads*>(&webkit_data), data);
|
| }
|
|
|
| -PluginInstance::PluginInstance(
|
| +PluginInstanceImpl::PluginInstanceImpl(
|
| PluginDelegate* delegate,
|
| content::RenderView* render_view,
|
| PluginModule* module,
|
| @@ -465,7 +465,7 @@
|
| nacl_document_load_ = true;
|
| }
|
|
|
| -PluginInstance::~PluginInstance() {
|
| +PluginInstanceImpl::~PluginInstanceImpl() {
|
| DCHECK(!fullscreen_container_);
|
|
|
| // Force-unbind any Graphics. In the case of Graphics2D, if the plugin
|
| @@ -504,9 +504,9 @@
|
| // method needs to access a member of the instance after the call has returned,
|
| // then it needs to keep its own reference on the stack.
|
|
|
| -void PluginInstance::Delete() {
|
| +void PluginInstanceImpl::Delete() {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| // Force the MessageChannel to release its "passthrough object" which should
|
| // release our last reference to the "InstanceObject" and will probably
|
| // destroy it. We want to do this prior to calling DidDestroy in case the
|
| @@ -532,9 +532,9 @@
|
| container_ = NULL;
|
| }
|
|
|
| -void PluginInstance::Paint(WebCanvas* canvas,
|
| - const gfx::Rect& plugin_rect,
|
| - const gfx::Rect& paint_rect) {
|
| +void PluginInstanceImpl::Paint(WebCanvas* canvas,
|
| + const gfx::Rect& plugin_rect,
|
| + const gfx::Rect& paint_rect) {
|
| TRACE_EVENT0("ppapi", "PluginInstance::Paint");
|
| if (module()->is_crashed()) {
|
| // Crashed plugin painting.
|
| @@ -550,7 +550,7 @@
|
| bound_graphics_2d->Paint(canvas, plugin_rect, paint_rect);
|
| }
|
|
|
| -void PluginInstance::InvalidateRect(const gfx::Rect& rect) {
|
| +void PluginInstanceImpl::InvalidateRect(const gfx::Rect& rect) {
|
| if (fullscreen_container_) {
|
| if (rect.IsEmpty())
|
| fullscreen_container_->Invalidate();
|
| @@ -567,7 +567,7 @@
|
| }
|
| }
|
|
|
| -void PluginInstance::ScrollRect(int dx, int dy, const gfx::Rect& rect) {
|
| +void PluginInstanceImpl::ScrollRect(int dx, int dy, const gfx::Rect& rect) {
|
| if (fullscreen_container_) {
|
| fullscreen_container_->ScrollRect(dx, dy, rect);
|
| } else {
|
| @@ -582,12 +582,12 @@
|
| }
|
| }
|
|
|
| -void PluginInstance::CommitBackingTexture() {
|
| +void PluginInstanceImpl::CommitBackingTexture() {
|
| if (texture_layer_.get())
|
| texture_layer_->SetNeedsDisplay();
|
| }
|
|
|
| -void PluginInstance::InstanceCrashed() {
|
| +void PluginInstanceImpl::InstanceCrashed() {
|
| // Force free all resources and vars.
|
| HostGlobals::Get()->InstanceCrashed(pp_instance());
|
|
|
| @@ -632,9 +632,9 @@
|
| #endif
|
| }
|
|
|
| -bool PluginInstance::Initialize(const std::vector<std::string>& arg_names,
|
| - const std::vector<std::string>& arg_values,
|
| - bool full_frame) {
|
| +bool PluginInstanceImpl::Initialize(const std::vector<std::string>& arg_names,
|
| + const std::vector<std::string>& arg_values,
|
| + bool full_frame) {
|
| message_channel_.reset(new MessageChannel(this));
|
|
|
| full_frame_ = full_frame;
|
| @@ -657,7 +657,7 @@
|
| return success;
|
| }
|
|
|
| -bool PluginInstance::HandleDocumentLoad(
|
| +bool PluginInstanceImpl::HandleDocumentLoad(
|
| const WebKit::WebURLResponse& response) {
|
| DCHECK(!document_loader_);
|
| if (!nacl_document_load_) {
|
| @@ -680,22 +680,22 @@
|
| return true;
|
| }
|
|
|
| -bool PluginInstance::SendCompositionEventToPlugin(PP_InputEvent_Type type,
|
| - const base::string16& text) {
|
| +bool PluginInstanceImpl::SendCompositionEventToPlugin(
|
| + PP_InputEvent_Type type, const base::string16& text) {
|
| std::vector<WebKit::WebCompositionUnderline> empty;
|
| return SendCompositionEventWithUnderlineInformationToPlugin(
|
| type, text, empty, static_cast<int>(text.size()),
|
| static_cast<int>(text.size()));
|
| }
|
|
|
| -bool PluginInstance::SendCompositionEventWithUnderlineInformationToPlugin(
|
| +bool PluginInstanceImpl::SendCompositionEventWithUnderlineInformationToPlugin(
|
| PP_InputEvent_Type type,
|
| const base::string16& text,
|
| const std::vector<WebKit::WebCompositionUnderline>& underlines,
|
| int selection_start,
|
| int selection_end) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
|
|
| if (!LoadInputEventInterface())
|
| return false;
|
| @@ -764,19 +764,19 @@
|
| return handled;
|
| }
|
|
|
| -void PluginInstance::RequestInputEventsHelper(uint32_t event_classes) {
|
| +void PluginInstanceImpl::RequestInputEventsHelper(uint32_t event_classes) {
|
| if (event_classes & PP_INPUTEVENT_CLASS_TOUCH)
|
| UpdateTouchEventRequest();
|
| if (event_classes & PP_INPUTEVENT_CLASS_WHEEL)
|
| container_->setWantsWheelEvents(IsAcceptingWheelEvents());
|
| }
|
|
|
| -bool PluginInstance::HandleCompositionStart(const base::string16& text) {
|
| +bool PluginInstanceImpl::HandleCompositionStart(const base::string16& text) {
|
| return SendCompositionEventToPlugin(PP_INPUTEVENT_TYPE_IME_COMPOSITION_START,
|
| text);
|
| }
|
|
|
| -bool PluginInstance::HandleCompositionUpdate(
|
| +bool PluginInstanceImpl::HandleCompositionUpdate(
|
| const base::string16& text,
|
| const std::vector<WebKit::WebCompositionUnderline>& underlines,
|
| int selection_start,
|
| @@ -786,18 +786,18 @@
|
| text, underlines, selection_start, selection_end);
|
| }
|
|
|
| -bool PluginInstance::HandleCompositionEnd(const base::string16& text) {
|
| +bool PluginInstanceImpl::HandleCompositionEnd(const base::string16& text) {
|
| return SendCompositionEventToPlugin(PP_INPUTEVENT_TYPE_IME_COMPOSITION_END,
|
| text);
|
| }
|
|
|
| -bool PluginInstance::HandleTextInput(const base::string16& text) {
|
| +bool PluginInstanceImpl::HandleTextInput(const base::string16& text) {
|
| return SendCompositionEventToPlugin(PP_INPUTEVENT_TYPE_IME_TEXT,
|
| text);
|
| }
|
|
|
| -void PluginInstance::GetSurroundingText(base::string16* text,
|
| - ui::Range* range) const {
|
| +void PluginInstanceImpl::GetSurroundingText(base::string16* text,
|
| + ui::Range* range) const {
|
| std::vector<size_t> offsets;
|
| offsets.push_back(selection_anchor_);
|
| offsets.push_back(selection_caret_);
|
| @@ -808,12 +808,12 @@
|
| : offsets[1]);
|
| }
|
|
|
| -bool PluginInstance::IsPluginAcceptingCompositionEvents() const {
|
| +bool PluginInstanceImpl::IsPluginAcceptingCompositionEvents() const {
|
| return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_IME) ||
|
| (input_event_mask_ & PP_INPUTEVENT_CLASS_IME);
|
| }
|
|
|
| -gfx::Rect PluginInstance::GetCaretBounds() const {
|
| +gfx::Rect PluginInstanceImpl::GetCaretBounds() const {
|
| if (!text_input_caret_set_) {
|
| // If it is never set by the plugin, use the bottom left corner.
|
| return gfx::Rect(view_data_.rect.point.x,
|
| @@ -831,9 +831,9 @@
|
| return caret;
|
| }
|
|
|
| -bool PluginInstance::HandleInputEvent(const WebKit::WebInputEvent& event,
|
| - WebCursorInfo* cursor_info) {
|
| - TRACE_EVENT0("ppapi", "PluginInstance::HandleInputEvent");
|
| +bool PluginInstanceImpl::HandleInputEvent(const WebKit::WebInputEvent& event,
|
| + WebCursorInfo* cursor_info) {
|
| + TRACE_EVENT0("ppapi", "PluginInstanceImpl::HandleInputEvent");
|
|
|
| if (WebInputEvent::isMouseEventType(event.type))
|
| delegate()->DidReceiveMouseEvent(this);
|
| @@ -843,7 +843,7 @@
|
| return false;
|
|
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
|
|
| bool rv = false;
|
| if (LoadInputEventInterface()) {
|
| @@ -889,18 +889,18 @@
|
| return rv;
|
| }
|
|
|
| -void PluginInstance::HandleMessage(PP_Var message) {
|
| - TRACE_EVENT0("ppapi", "PluginInstance::HandleMessage");
|
| +void PluginInstanceImpl::HandleMessage(PP_Var message) {
|
| + TRACE_EVENT0("ppapi", "PluginInstanceImpl::HandleMessage");
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadMessagingInterface())
|
| return;
|
| plugin_messaging_interface_->HandleMessage(pp_instance(), message);
|
| }
|
|
|
| -PP_Var PluginInstance::GetInstanceObject() {
|
| +PP_Var PluginInstanceImpl::GetInstanceObject() {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
|
|
| // If the plugin supports the private instance interface, try to retrieve its
|
| // instance object.
|
| @@ -909,9 +909,10 @@
|
| return PP_MakeUndefined();
|
| }
|
|
|
| -void PluginInstance::ViewChanged(const gfx::Rect& position,
|
| - const gfx::Rect& clip,
|
| - const std::vector<gfx::Rect>& cut_outs_rects) {
|
| +void PluginInstanceImpl::ViewChanged(
|
| + const gfx::Rect& position,
|
| + const gfx::Rect& clip,
|
| + const std::vector<gfx::Rect>& cut_outs_rects) {
|
| // WebKit can give weird (x,y) positions for empty clip rects (since the
|
| // position technically doesn't matter). But we want to make these
|
| // consistent since this is given to the plugin, so force everything to 0
|
| @@ -961,7 +962,7 @@
|
| SendDidChangeView();
|
| }
|
|
|
| -void PluginInstance::SetWebKitFocus(bool has_focus) {
|
| +void PluginInstanceImpl::SetWebKitFocus(bool has_focus) {
|
| if (has_webkit_focus_ == has_focus)
|
| return;
|
|
|
| @@ -971,7 +972,7 @@
|
| SendFocusChangeNotification();
|
| }
|
|
|
| -void PluginInstance::SetContentAreaFocus(bool has_focus) {
|
| +void PluginInstanceImpl::SetContentAreaFocus(bool has_focus) {
|
| if (has_content_area_focus_ == has_focus)
|
| return;
|
|
|
| @@ -981,44 +982,44 @@
|
| SendFocusChangeNotification();
|
| }
|
|
|
| -void PluginInstance::PageVisibilityChanged(bool is_visible) {
|
| +void PluginInstanceImpl::PageVisibilityChanged(bool is_visible) {
|
| if (is_visible == view_data_.is_page_visible)
|
| return; // Nothing to do.
|
| view_data_.is_page_visible = is_visible;
|
|
|
| // If the initial DidChangeView notification hasn't been sent to the plugin,
|
| // let it pass the visibility state for us, instead of sending a notification
|
| - // immediately. It is possible that PluginInstance::ViewChanged() hasn't been
|
| - // called for the first time. In that case, most of the fields in |view_data_|
|
| - // haven't been properly initialized.
|
| + // immediately. It is possible that PluginInstanceImpl::ViewChanged() hasn't
|
| + // been called for the first time. In that case, most of the fields in
|
| + // |view_data_| haven't been properly initialized.
|
| if (sent_initial_did_change_view_)
|
| SendDidChangeView();
|
| }
|
|
|
| -void PluginInstance::ViewWillInitiatePaint() {
|
| +void PluginInstanceImpl::ViewWillInitiatePaint() {
|
| if (GetBoundGraphics2D())
|
| GetBoundGraphics2D()->ViewWillInitiatePaint();
|
| else if (bound_graphics_3d_.get())
|
| bound_graphics_3d_->ViewWillInitiatePaint();
|
| }
|
|
|
| -void PluginInstance::ViewInitiatedPaint() {
|
| +void PluginInstanceImpl::ViewInitiatedPaint() {
|
| if (GetBoundGraphics2D())
|
| GetBoundGraphics2D()->ViewInitiatedPaint();
|
| else if (bound_graphics_3d_.get())
|
| bound_graphics_3d_->ViewInitiatedPaint();
|
| }
|
|
|
| -void PluginInstance::ViewFlushedPaint() {
|
| +void PluginInstanceImpl::ViewFlushedPaint() {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (GetBoundGraphics2D())
|
| GetBoundGraphics2D()->ViewFlushedPaint();
|
| else if (bound_graphics_3d_.get())
|
| bound_graphics_3d_->ViewFlushedPaint();
|
| }
|
|
|
| -bool PluginInstance::GetBitmapForOptimizedPluginPaint(
|
| +bool PluginInstanceImpl::GetBitmapForOptimizedPluginPaint(
|
| const gfx::Rect& paint_bounds,
|
| TransportDIB** dib,
|
| gfx::Rect* location,
|
| @@ -1075,9 +1076,9 @@
|
| return true;
|
| }
|
|
|
| -base::string16 PluginInstance::GetSelectedText(bool html) {
|
| +base::string16 PluginInstanceImpl::GetSelectedText(bool html) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadSelectionInterface())
|
| return base::string16();
|
|
|
| @@ -1092,9 +1093,9 @@
|
| return selection;
|
| }
|
|
|
| -base::string16 PluginInstance::GetLinkAtPosition(const gfx::Point& point) {
|
| +base::string16 PluginInstanceImpl::GetLinkAtPosition(const gfx::Point& point) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadPdfInterface())
|
| return base::string16();
|
|
|
| @@ -1111,29 +1112,29 @@
|
| return link;
|
| }
|
|
|
| -void PluginInstance::RequestSurroundingText(
|
| +void PluginInstanceImpl::RequestSurroundingText(
|
| size_t desired_number_of_characters) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadTextInputInterface())
|
| return;
|
| plugin_textinput_interface_->RequestSurroundingText(
|
| pp_instance(), desired_number_of_characters);
|
| }
|
|
|
| -void PluginInstance::Zoom(double factor, bool text_only) {
|
| +void PluginInstanceImpl::Zoom(double factor, bool text_only) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadZoomInterface())
|
| return;
|
| plugin_zoom_interface_->Zoom(pp_instance(), factor, PP_FromBool(text_only));
|
| }
|
|
|
| -bool PluginInstance::StartFind(const base::string16& search_text,
|
| - bool case_sensitive,
|
| - int identifier) {
|
| +bool PluginInstanceImpl::StartFind(const base::string16& search_text,
|
| + bool case_sensitive,
|
| + int identifier) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadFindInterface())
|
| return false;
|
| find_identifier_ = identifier;
|
| @@ -1144,24 +1145,24 @@
|
| PP_FromBool(case_sensitive)));
|
| }
|
|
|
| -void PluginInstance::SelectFindResult(bool forward) {
|
| +void PluginInstanceImpl::SelectFindResult(bool forward) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (LoadFindInterface())
|
| plugin_find_interface_->SelectFindResult(pp_instance(),
|
| PP_FromBool(forward));
|
| }
|
|
|
| -void PluginInstance::StopFind() {
|
| +void PluginInstanceImpl::StopFind() {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadFindInterface())
|
| return;
|
| find_identifier_ = -1;
|
| plugin_find_interface_->StopFind(pp_instance());
|
| }
|
|
|
| -bool PluginInstance::LoadFindInterface() {
|
| +bool PluginInstanceImpl::LoadFindInterface() {
|
| if (!plugin_find_interface_) {
|
| plugin_find_interface_ =
|
| static_cast<const PPP_Find_Dev*>(module_->GetPluginInterface(
|
| @@ -1171,7 +1172,7 @@
|
| return !!plugin_find_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadInputEventInterface() {
|
| +bool PluginInstanceImpl::LoadInputEventInterface() {
|
| if (!checked_for_plugin_input_event_interface_) {
|
| checked_for_plugin_input_event_interface_ = true;
|
| plugin_input_event_interface_ =
|
| @@ -1181,7 +1182,7 @@
|
| return !!plugin_input_event_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadMessagingInterface() {
|
| +bool PluginInstanceImpl::LoadMessagingInterface() {
|
| if (!checked_for_plugin_messaging_interface_) {
|
| checked_for_plugin_messaging_interface_ = true;
|
| plugin_messaging_interface_ =
|
| @@ -1191,7 +1192,7 @@
|
| return !!plugin_messaging_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadMouseLockInterface() {
|
| +bool PluginInstanceImpl::LoadMouseLockInterface() {
|
| if (!plugin_mouse_lock_interface_) {
|
| plugin_mouse_lock_interface_ =
|
| static_cast<const PPP_MouseLock*>(module_->GetPluginInterface(
|
| @@ -1201,7 +1202,7 @@
|
| return !!plugin_mouse_lock_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadPdfInterface() {
|
| +bool PluginInstanceImpl::LoadPdfInterface() {
|
| if (!checked_for_plugin_pdf_interface_) {
|
| checked_for_plugin_pdf_interface_ = true;
|
| plugin_pdf_interface_ =
|
| @@ -1212,7 +1213,7 @@
|
| return !!plugin_pdf_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadPrintInterface() {
|
| +bool PluginInstanceImpl::LoadPrintInterface() {
|
| // Only check for the interface if the plugin has dev permission.
|
| if (!module_->permissions().HasPermission(::ppapi::PERMISSION_DEV))
|
| return false;
|
| @@ -1223,7 +1224,7 @@
|
| return !!plugin_print_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadPrivateInterface() {
|
| +bool PluginInstanceImpl::LoadPrivateInterface() {
|
| // Only check for the interface if the plugin has private permission.
|
| if (!module_->permissions().HasPermission(::ppapi::PERMISSION_PRIVATE))
|
| return false;
|
| @@ -1235,7 +1236,7 @@
|
| return !!plugin_private_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadSelectionInterface() {
|
| +bool PluginInstanceImpl::LoadSelectionInterface() {
|
| if (!plugin_selection_interface_) {
|
| plugin_selection_interface_ =
|
| static_cast<const PPP_Selection_Dev*>(module_->GetPluginInterface(
|
| @@ -1244,7 +1245,7 @@
|
| return !!plugin_selection_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadTextInputInterface() {
|
| +bool PluginInstanceImpl::LoadTextInputInterface() {
|
| if (!plugin_textinput_interface_) {
|
| plugin_textinput_interface_ =
|
| static_cast<const PPP_TextInput_Dev*>(module_->GetPluginInterface(
|
| @@ -1254,7 +1255,7 @@
|
| return !!plugin_textinput_interface_;
|
| }
|
|
|
| -bool PluginInstance::LoadZoomInterface() {
|
| +bool PluginInstanceImpl::LoadZoomInterface() {
|
| if (!plugin_zoom_interface_) {
|
| plugin_zoom_interface_ =
|
| static_cast<const PPP_Zoom_Dev*>(module_->GetPluginInterface(
|
| @@ -1264,12 +1265,12 @@
|
| return !!plugin_zoom_interface_;
|
| }
|
|
|
| -bool PluginInstance::PluginHasFocus() const {
|
| +bool PluginInstanceImpl::PluginHasFocus() const {
|
| return flash_fullscreen_ || (has_webkit_focus_ && has_content_area_focus_);
|
| }
|
|
|
| -void PluginInstance::SendFocusChangeNotification() {
|
| - // This call can happen during PluginInstance destruction, because WebKit
|
| +void PluginInstanceImpl::SendFocusChangeNotification() {
|
| + // This call can happen during PluginInstanceImpl destruction, because WebKit
|
| // informs the plugin it's losing focus. See crbug.com/236574
|
| if (!delegate_ || !instance_interface_)
|
| return;
|
| @@ -1278,7 +1279,7 @@
|
| instance_interface_->DidChangeFocus(pp_instance(), PP_FromBool(has_focus));
|
| }
|
|
|
| -void PluginInstance::UpdateTouchEventRequest() {
|
| +void PluginInstanceImpl::UpdateTouchEventRequest() {
|
| bool raw_touch = (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH) ||
|
| (input_event_mask_ & PP_INPUTEVENT_CLASS_TOUCH);
|
| container_->requestTouchEventType(raw_touch ?
|
| @@ -1286,21 +1287,21 @@
|
| WebKit::WebPluginContainer::TouchEventRequestTypeSynthesizedMouse);
|
| }
|
|
|
| -bool PluginInstance::IsAcceptingWheelEvents() const {
|
| +bool PluginInstanceImpl::IsAcceptingWheelEvents() const {
|
| return (filtered_input_event_mask_ & PP_INPUTEVENT_CLASS_WHEEL) ||
|
| (input_event_mask_ & PP_INPUTEVENT_CLASS_WHEEL);
|
| }
|
|
|
| -void PluginInstance::ScheduleAsyncDidChangeView() {
|
| +void PluginInstanceImpl::ScheduleAsyncDidChangeView() {
|
| if (view_change_weak_ptr_factory_.HasWeakPtrs())
|
| return; // Already scheduled.
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&PluginInstance::SendAsyncDidChangeView,
|
| + base::Bind(&PluginInstanceImpl::SendAsyncDidChangeView,
|
| view_change_weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void PluginInstance::SendAsyncDidChangeView() {
|
| +void PluginInstanceImpl::SendAsyncDidChangeView() {
|
| // The bound callback that owns the weak pointer is still valid until after
|
| // this function returns. SendDidChangeView checks HasWeakPtrs, so we need to
|
| // invalidate them here.
|
| @@ -1310,7 +1311,7 @@
|
| SendDidChangeView();
|
| }
|
|
|
| -void PluginInstance::SendDidChangeView() {
|
| +void PluginInstanceImpl::SendDidChangeView() {
|
| // Don't send DidChangeView to crashed plugins.
|
| if (module()->is_crashed())
|
| return;
|
| @@ -1342,7 +1343,7 @@
|
| &view_data_.clip_rect);
|
| }
|
|
|
| -void PluginInstance::ReportGeometry() {
|
| +void PluginInstanceImpl::ReportGeometry() {
|
| // If this call was delayed, we may have transitioned back to fullscreen in
|
| // the mean time, so only report the geometry if we are actually in normal
|
| // mode.
|
| @@ -1350,10 +1351,10 @@
|
| container_->reportGeometry();
|
| }
|
|
|
| -bool PluginInstance::GetPreferredPrintOutputFormat(
|
| +bool PluginInstanceImpl::GetPreferredPrintOutputFormat(
|
| PP_PrintOutputFormat_Dev* format) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!LoadPrintInterface())
|
| return false;
|
| uint32_t supported_formats =
|
| @@ -1365,21 +1366,21 @@
|
| return false;
|
| }
|
|
|
| -bool PluginInstance::SupportsPrintInterface() {
|
| +bool PluginInstanceImpl::SupportsPrintInterface() {
|
| PP_PrintOutputFormat_Dev format;
|
| return GetPreferredPrintOutputFormat(&format);
|
| }
|
|
|
| -bool PluginInstance::IsPrintScalingDisabled() {
|
| +bool PluginInstanceImpl::IsPrintScalingDisabled() {
|
| DCHECK(plugin_print_interface_);
|
| if (!plugin_print_interface_)
|
| return false;
|
| return plugin_print_interface_->IsScalingDisabled(pp_instance()) == PP_TRUE;
|
| }
|
|
|
| -int PluginInstance::PrintBegin(const WebPrintParams& print_params) {
|
| +int PluginInstanceImpl::PrintBegin(const WebPrintParams& print_params) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| PP_PrintOutputFormat_Dev format;
|
| if (!GetPreferredPrintOutputFormat(&format)) {
|
| // PrintBegin should not have been called since SupportsPrintInterface
|
| @@ -1408,7 +1409,7 @@
|
| return num_pages;
|
| }
|
|
|
| -bool PluginInstance::PrintPage(int page_number, WebKit::WebCanvas* canvas) {
|
| +bool PluginInstanceImpl::PrintPage(int page_number, WebKit::WebCanvas* canvas) {
|
| #if defined(ENABLE_PRINTING)
|
| DCHECK(plugin_print_interface_);
|
| PP_PrintPageNumberRange_Dev page_range;
|
| @@ -1431,11 +1432,12 @@
|
| #endif
|
| }
|
|
|
| -bool PluginInstance::PrintPageHelper(PP_PrintPageNumberRange_Dev* page_ranges,
|
| - int num_ranges,
|
| - WebKit::WebCanvas* canvas) {
|
| +bool PluginInstanceImpl::PrintPageHelper(
|
| + PP_PrintPageNumberRange_Dev* page_ranges,
|
| + int num_ranges,
|
| + WebKit::WebCanvas* canvas) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| DCHECK(plugin_print_interface_);
|
| if (!plugin_print_interface_)
|
| return false;
|
| @@ -1455,9 +1457,9 @@
|
| return ret;
|
| }
|
|
|
| -void PluginInstance::PrintEnd() {
|
| +void PluginInstanceImpl::PrintEnd() {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| if (!ranges_.empty())
|
| PrintPageHelper(&(ranges_.front()), ranges_.size(), canvas_.get());
|
| canvas_.clear();
|
| @@ -1473,14 +1475,14 @@
|
| #endif // defined(OS_MACOSX)
|
| }
|
|
|
| -bool PluginInstance::CanRotateView() {
|
| +bool PluginInstanceImpl::CanRotateView() {
|
| if (!LoadPdfInterface())
|
| return false;
|
|
|
| return true;
|
| }
|
|
|
| -void PluginInstance::SetBoundGraphics2DForTest(
|
| +void PluginInstanceImpl::SetBoundGraphics2DForTest(
|
| PluginDelegate::PlatformGraphics2D* graphics) {
|
| BindGraphics(pp_instance(), 0); // Unbind any old stuff.
|
| if (graphics) {
|
| @@ -1489,7 +1491,7 @@
|
| }
|
| }
|
|
|
| -void PluginInstance::RotateView(WebPlugin::RotationType type) {
|
| +void PluginInstanceImpl::RotateView(WebPlugin::RotationType type) {
|
| if (!LoadPdfInterface())
|
| return;
|
| PP_PrivatePageTransformType transform_type =
|
| @@ -1500,17 +1502,17 @@
|
| // NOTE: plugin instance may have been deleted.
|
| }
|
|
|
| -bool PluginInstance::FlashIsFullscreenOrPending() {
|
| +bool PluginInstanceImpl::FlashIsFullscreenOrPending() {
|
| return fullscreen_container_ != NULL;
|
| }
|
|
|
| -bool PluginInstance::IsFullscreenOrPending() {
|
| +bool PluginInstanceImpl::IsFullscreenOrPending() {
|
| return desired_fullscreen_state_;
|
| }
|
|
|
| -bool PluginInstance::SetFullscreen(bool fullscreen) {
|
| +bool PluginInstanceImpl::SetFullscreen(bool fullscreen) {
|
| // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
|
|
| // Check whether we are trying to switch to the state we're already going
|
| // to (i.e. if we're already switching to fullscreen but the fullscreen
|
| @@ -1544,38 +1546,7 @@
|
| return true;
|
| }
|
|
|
| -void PluginInstance::FlashSetFullscreen(bool fullscreen, bool delay_report) {
|
| - TRACE_EVENT0("ppapi", "PluginInstance::FlashSetFullscreen");
|
| - // Keep a reference on the stack. See NOTE above.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| -
|
| - // We check whether we are trying to switch to the state we're already going
|
| - // to (i.e. if we're already switching to fullscreen but the fullscreen
|
| - // container isn't ready yet, don't do anything more).
|
| - if (fullscreen == FlashIsFullscreenOrPending())
|
| - return;
|
| -
|
| - // Unbind current 2D or 3D graphics context.
|
| - VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off");
|
| - if (fullscreen) {
|
| - DCHECK(!fullscreen_container_);
|
| - fullscreen_container_ = delegate_->CreateFullscreenContainer(this);
|
| - UpdateLayer();
|
| - } else {
|
| - DCHECK(fullscreen_container_);
|
| - fullscreen_container_->Destroy();
|
| - fullscreen_container_ = NULL;
|
| - UpdateFlashFullscreenState(false);
|
| - if (!delay_report) {
|
| - ReportGeometry();
|
| - } else {
|
| - base::MessageLoop::current()->PostTask(
|
| - FROM_HERE, base::Bind(&PluginInstance::ReportGeometry, this));
|
| - }
|
| - }
|
| -}
|
| -
|
| -void PluginInstance::UpdateFlashFullscreenState(bool flash_fullscreen) {
|
| +void PluginInstanceImpl::UpdateFlashFullscreenState(bool flash_fullscreen) {
|
| bool is_mouselock_pending = TrackedCallback::IsPending(lock_mouse_callback_);
|
|
|
| if (flash_fullscreen == flash_fullscreen_) {
|
| @@ -1609,59 +1580,8 @@
|
| SendFocusChangeNotification();
|
| }
|
|
|
| -int32_t PluginInstance::Navigate(const ::ppapi::URLRequestInfoData& request,
|
| - const char* target,
|
| - bool from_user_action) {
|
| +bool PluginInstanceImpl::IsViewAccelerated() {
|
| if (!container_)
|
| - return PP_ERROR_FAILED;
|
| -
|
| - WebDocument document = container_->element().document();
|
| - WebFrame* frame = document.frame();
|
| - if (!frame)
|
| - return PP_ERROR_FAILED;
|
| -
|
| - ::ppapi::URLRequestInfoData completed_request = request;
|
| -
|
| - WebURLRequest web_request;
|
| - if (!CreateWebURLRequest(&completed_request, frame, &web_request))
|
| - return PP_ERROR_FAILED;
|
| - web_request.setFirstPartyForCookies(document.firstPartyForCookies());
|
| - web_request.setHasUserGesture(from_user_action);
|
| -
|
| - GURL gurl(web_request.url());
|
| - if (gurl.SchemeIs("javascript")) {
|
| - // In imitation of the NPAPI implementation, only |target_frame == frame| is
|
| - // allowed for security reasons.
|
| - WebFrame* target_frame =
|
| - frame->view()->findFrameByName(WebString::fromUTF8(target), frame);
|
| - if (target_frame != frame)
|
| - return PP_ERROR_NOACCESS;
|
| -
|
| - // TODO(viettrungluu): NPAPI sends the result back to the plugin -- do we
|
| - // need that?
|
| - WebString result = container_->executeScriptURL(gurl, from_user_action);
|
| - return result.isNull() ? PP_ERROR_FAILED : PP_OK;
|
| - }
|
| -
|
| - // Only GETs and POSTs are supported.
|
| - if (web_request.httpMethod() != "GET" &&
|
| - web_request.httpMethod() != "POST")
|
| - return PP_ERROR_BADARGUMENT;
|
| -
|
| - WebString target_str = WebString::fromUTF8(target);
|
| - container_->loadFrameRequest(web_request, target_str, false, NULL);
|
| - return PP_OK;
|
| -}
|
| -
|
| -bool PluginInstance::IsRectTopmost(const gfx::Rect& rect) {
|
| - if (flash_fullscreen_)
|
| - return true;
|
| -
|
| - return container_->isRectTopmost(rect);
|
| -}
|
| -
|
| -bool PluginInstance::IsViewAccelerated() {
|
| - if (!container_)
|
| return false;
|
|
|
| WebDocument document = container_->element().document();
|
| @@ -1675,12 +1595,12 @@
|
| return view->isAcceleratedCompositingActive();
|
| }
|
|
|
| -PluginDelegate::PlatformContext3D* PluginInstance::CreateContext3D() {
|
| +PluginDelegate::PlatformContext3D* PluginInstanceImpl::CreateContext3D() {
|
| return delegate_->CreateContext3D();
|
| }
|
|
|
| -bool PluginInstance::PrintPDFOutput(PP_Resource print_output,
|
| - WebKit::WebCanvas* canvas) {
|
| +bool PluginInstanceImpl::PrintPDFOutput(PP_Resource print_output,
|
| + WebKit::WebCanvas* canvas) {
|
| #if defined(ENABLE_PRINTING)
|
| ::ppapi::thunk::EnterResourceNoLock<PPB_Buffer_API> enter(print_output, true);
|
| if (enter.failed())
|
| @@ -1771,13 +1691,14 @@
|
| #endif
|
| }
|
|
|
| -PluginDelegate::PlatformGraphics2D* PluginInstance::GetBoundGraphics2D() const {
|
| +PluginDelegate::PlatformGraphics2D*
|
| + PluginInstanceImpl::GetBoundGraphics2D() const {
|
| return bound_graphics_2d_platform_;
|
| }
|
|
|
| static void IgnoreCallback(unsigned, bool) {}
|
|
|
| -void PluginInstance::UpdateLayer() {
|
| +void PluginInstanceImpl::UpdateLayer() {
|
| if (!container_)
|
| return;
|
|
|
| @@ -1821,24 +1742,19 @@
|
| layer_bound_to_fullscreen_ = !!fullscreen_container_;
|
| }
|
|
|
| -void PluginInstance::AddPluginObject(PluginObject* plugin_object) {
|
| +void PluginInstanceImpl::AddPluginObject(PluginObject* plugin_object) {
|
| DCHECK(live_plugin_objects_.find(plugin_object) ==
|
| live_plugin_objects_.end());
|
| live_plugin_objects_.insert(plugin_object);
|
| }
|
|
|
| -void PluginInstance::RemovePluginObject(PluginObject* plugin_object) {
|
| +void PluginInstanceImpl::RemovePluginObject(PluginObject* plugin_object) {
|
| // Don't actually verify that the object is in the set since during module
|
| // deletion we'll be in the process of freeing them.
|
| live_plugin_objects_.erase(plugin_object);
|
| }
|
|
|
| -bool PluginInstance::IsFullPagePlugin() const {
|
| - WebFrame* frame = container()->element().document().frame();
|
| - return frame->view()->mainFrame()->document().isPluginDocument();
|
| -}
|
| -
|
| -bool PluginInstance::IsProcessingUserGesture() {
|
| +bool PluginInstanceImpl::IsProcessingUserGesture() {
|
| PP_TimeTicks now =
|
| ::ppapi::TimeTicksToPPTimeTicks(base::TimeTicks::Now());
|
| // Give a lot of slack so tests won't be flaky.
|
| @@ -1847,30 +1763,30 @@
|
| (now - pending_user_gesture_ < kUserGestureDurationInSeconds);
|
| }
|
|
|
| -WebUserGestureToken PluginInstance::CurrentUserGestureToken() {
|
| +WebUserGestureToken PluginInstanceImpl::CurrentUserGestureToken() {
|
| if (!IsProcessingUserGesture())
|
| pending_user_gesture_token_ = WebUserGestureToken();
|
| return pending_user_gesture_token_;
|
| }
|
|
|
| -void PluginInstance::OnLockMouseACK(bool succeeded) {
|
| +void PluginInstanceImpl::OnLockMouseACK(bool succeeded) {
|
| if (TrackedCallback::IsPending(lock_mouse_callback_))
|
| lock_mouse_callback_->Run(succeeded ? PP_OK : PP_ERROR_FAILED);
|
| }
|
|
|
| -void PluginInstance::OnMouseLockLost() {
|
| +void PluginInstanceImpl::OnMouseLockLost() {
|
| if (LoadMouseLockInterface())
|
| plugin_mouse_lock_interface_->MouseLockLost(pp_instance());
|
| }
|
|
|
| -void PluginInstance::HandleMouseLockedInputEvent(
|
| +void PluginInstanceImpl::HandleMouseLockedInputEvent(
|
| const WebKit::WebMouseEvent& event) {
|
| // |cursor_info| is ignored since it is hidden when the mouse is locked.
|
| WebKit::WebCursorInfo cursor_info;
|
| HandleInputEvent(event, &cursor_info);
|
| }
|
|
|
| -void PluginInstance::SimulateInputEvent(const InputEventData& input_event) {
|
| +void PluginInstanceImpl::SimulateInputEvent(const InputEventData& input_event) {
|
| WebView* web_view = container()->element().document().frame()->view();
|
| if (!web_view) {
|
| NOTREACHED();
|
| @@ -1892,7 +1808,7 @@
|
| }
|
| }
|
|
|
| -bool PluginInstance::SimulateIMEEvent(const InputEventData& input_event) {
|
| +bool PluginInstanceImpl::SimulateIMEEvent(const InputEventData& input_event) {
|
| switch (input_event.event_type) {
|
| case PP_INPUTEVENT_TYPE_IME_COMPOSITION_START:
|
| case PP_INPUTEVENT_TYPE_IME_COMPOSITION_UPDATE:
|
| @@ -1912,7 +1828,7 @@
|
| return true;
|
| }
|
|
|
| -void PluginInstance::SimulateImeSetCompositionEvent(
|
| +void PluginInstanceImpl::SimulateImeSetCompositionEvent(
|
| const InputEventData& input_event) {
|
| std::vector<size_t> offsets;
|
| offsets.push_back(input_event.composition_selection_start);
|
| @@ -1938,7 +1854,7 @@
|
| utf16_text, underlines, offsets[0], offsets[1]);
|
| }
|
|
|
| -ContentDecryptorDelegate* PluginInstance::GetContentDecryptorDelegate() {
|
| +ContentDecryptorDelegate* PluginInstanceImpl::GetContentDecryptorDelegate() {
|
| if (content_decryptor_delegate_)
|
| return content_decryptor_delegate_.get();
|
|
|
| @@ -1954,9 +1870,9 @@
|
| return content_decryptor_delegate_.get();
|
| }
|
|
|
| -PP_Bool PluginInstance::BindGraphics(PP_Instance instance,
|
| - PP_Resource device) {
|
| - TRACE_EVENT0("ppapi", "PluginInstance::BindGraphics");
|
| +PP_Bool PluginInstanceImpl::BindGraphics(PP_Instance instance,
|
| + PP_Resource device) {
|
| + TRACE_EVENT0("ppapi", "PluginInstanceImpl::BindGraphics");
|
| // The Graphics3D instance can't be destroyed until we call
|
| // UpdateLayer().
|
| scoped_refptr< ::ppapi::Resource> old_graphics = bound_graphics_3d_.get();
|
| @@ -2009,19 +1925,19 @@
|
| return PP_FALSE;
|
| }
|
|
|
| -PP_Bool PluginInstance::IsFullFrame(PP_Instance instance) {
|
| +PP_Bool PluginInstanceImpl::IsFullFrame(PP_Instance instance) {
|
| return PP_FromBool(full_frame());
|
| }
|
|
|
| -const ViewData* PluginInstance::GetViewData(PP_Instance instance) {
|
| +const ViewData* PluginInstanceImpl::GetViewData(PP_Instance instance) {
|
| return &view_data_;
|
| }
|
|
|
| -PP_Bool PluginInstance::FlashIsFullscreen(PP_Instance instance) {
|
| +PP_Bool PluginInstanceImpl::FlashIsFullscreen(PP_Instance instance) {
|
| return PP_FromBool(flash_fullscreen_);
|
| }
|
|
|
| -PP_Var PluginInstance::GetWindowObject(PP_Instance instance) {
|
| +PP_Var PluginInstanceImpl::GetWindowObject(PP_Instance instance) {
|
| if (!container_)
|
| return PP_MakeUndefined();
|
|
|
| @@ -2032,19 +1948,19 @@
|
| return NPObjectToPPVar(this, frame->windowObject());
|
| }
|
|
|
| -PP_Var PluginInstance::GetOwnerElementObject(PP_Instance instance) {
|
| +PP_Var PluginInstanceImpl::GetOwnerElementObject(PP_Instance instance) {
|
| if (!container_)
|
| return PP_MakeUndefined();
|
| return NPObjectToPPVar(this, container_->scriptableObjectForElement());
|
| }
|
|
|
| -PP_Var PluginInstance::ExecuteScript(PP_Instance instance,
|
| - PP_Var script,
|
| - PP_Var* exception) {
|
| +PP_Var PluginInstanceImpl::ExecuteScript(PP_Instance instance,
|
| + PP_Var script,
|
| + PP_Var* exception) {
|
| // Executing the script may remove the plugin from the DOM, so we need to keep
|
| // a reference to ourselves so that we can still process the result after the
|
| // WebBindings::evaluate() below.
|
| - scoped_refptr<PluginInstance> ref(this);
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| TryCatch try_catch(exception);
|
| if (try_catch.has_exception())
|
| return PP_MakeUndefined();
|
| @@ -2089,17 +2005,17 @@
|
| return ret;
|
| }
|
|
|
| -uint32_t PluginInstance::GetAudioHardwareOutputSampleRate(
|
| +uint32_t PluginInstanceImpl::GetAudioHardwareOutputSampleRate(
|
| PP_Instance instance) {
|
| return delegate()->GetAudioHardwareOutputSampleRate();
|
| }
|
|
|
| -uint32_t PluginInstance::GetAudioHardwareOutputBufferSize(
|
| +uint32_t PluginInstanceImpl::GetAudioHardwareOutputBufferSize(
|
| PP_Instance instance) {
|
| return delegate()->GetAudioHardwareOutputBufferSize();
|
| }
|
|
|
| -PP_Var PluginInstance::GetDefaultCharSet(PP_Instance instance) {
|
| +PP_Var PluginInstanceImpl::GetDefaultCharSet(PP_Instance instance) {
|
| std::string encoding = delegate()->GetDefaultEncoding();
|
| return StringVar::StringToPPVar(encoding);
|
| }
|
| @@ -2108,53 +2024,54 @@
|
| // PPP_ContentDecryptor_Private calls made on |content_decryptor_delegate_|.
|
| // Therefore, |content_decryptor_delegate_| must have been initialized when
|
| // the following methods are called.
|
| -void PluginInstance::NeedKey(PP_Instance instance,
|
| - PP_Var key_system_var,
|
| - PP_Var session_id_var,
|
| - PP_Var init_data_var) {
|
| +void PluginInstanceImpl::NeedKey(PP_Instance instance,
|
| + PP_Var key_system_var,
|
| + PP_Var session_id_var,
|
| + PP_Var init_data_var) {
|
| content_decryptor_delegate_->NeedKey(
|
| key_system_var, session_id_var, init_data_var);
|
| }
|
|
|
| -void PluginInstance::KeyAdded(PP_Instance instance,
|
| - PP_Var key_system_var,
|
| - PP_Var session_id_var) {
|
| +void PluginInstanceImpl::KeyAdded(PP_Instance instance,
|
| + PP_Var key_system_var,
|
| + PP_Var session_id_var) {
|
| content_decryptor_delegate_->KeyAdded(key_system_var, session_id_var);
|
| }
|
|
|
| -void PluginInstance::KeyMessage(PP_Instance instance,
|
| - PP_Var key_system_var,
|
| - PP_Var session_id_var,
|
| - PP_Var message_var,
|
| - PP_Var default_url_var) {
|
| +void PluginInstanceImpl::KeyMessage(PP_Instance instance,
|
| + PP_Var key_system_var,
|
| + PP_Var session_id_var,
|
| + PP_Var message_var,
|
| + PP_Var default_url_var) {
|
| content_decryptor_delegate_->KeyMessage(
|
| key_system_var, session_id_var, message_var, default_url_var);
|
| }
|
|
|
| -void PluginInstance::KeyError(PP_Instance instance,
|
| - PP_Var key_system_var,
|
| - PP_Var session_id_var,
|
| - int32_t media_error,
|
| - int32_t system_code) {
|
| +void PluginInstanceImpl::KeyError(PP_Instance instance,
|
| + PP_Var key_system_var,
|
| + PP_Var session_id_var,
|
| + int32_t media_error,
|
| + int32_t system_code) {
|
| content_decryptor_delegate_->KeyError(
|
| key_system_var, session_id_var, media_error, system_code);
|
| }
|
|
|
| -void PluginInstance::DeliverBlock(PP_Instance instance,
|
| - PP_Resource decrypted_block,
|
| - const PP_DecryptedBlockInfo* block_info) {
|
| +void PluginInstanceImpl::DeliverBlock(PP_Instance instance,
|
| + PP_Resource decrypted_block,
|
| + const PP_DecryptedBlockInfo* block_info) {
|
| content_decryptor_delegate_->DeliverBlock(decrypted_block, block_info);
|
| }
|
|
|
| -void PluginInstance::DecoderInitializeDone(PP_Instance instance,
|
| - PP_DecryptorStreamType decoder_type,
|
| - uint32_t request_id,
|
| - PP_Bool success) {
|
| +void PluginInstanceImpl::DecoderInitializeDone(
|
| + PP_Instance instance,
|
| + PP_DecryptorStreamType decoder_type,
|
| + uint32_t request_id,
|
| + PP_Bool success) {
|
| content_decryptor_delegate_->DecoderInitializeDone(
|
| decoder_type, request_id, success);
|
| }
|
|
|
| -void PluginInstance::DecoderDeinitializeDone(
|
| +void PluginInstanceImpl::DecoderDeinitializeDone(
|
| PP_Instance instance,
|
| PP_DecryptorStreamType decoder_type,
|
| uint32_t request_id) {
|
| @@ -2162,55 +2079,56 @@
|
| request_id);
|
| }
|
|
|
| -void PluginInstance::DecoderResetDone(PP_Instance instance,
|
| - PP_DecryptorStreamType decoder_type,
|
| - uint32_t request_id) {
|
| +void PluginInstanceImpl::DecoderResetDone(PP_Instance instance,
|
| + PP_DecryptorStreamType decoder_type,
|
| + uint32_t request_id) {
|
| content_decryptor_delegate_->DecoderResetDone(decoder_type, request_id);
|
| }
|
|
|
|
|
| -void PluginInstance::DeliverFrame(PP_Instance instance,
|
| - PP_Resource decrypted_frame,
|
| - const PP_DecryptedFrameInfo* frame_info) {
|
| +void PluginInstanceImpl::DeliverFrame(PP_Instance instance,
|
| + PP_Resource decrypted_frame,
|
| + const PP_DecryptedFrameInfo* frame_info) {
|
| content_decryptor_delegate_->DeliverFrame(decrypted_frame, frame_info);
|
| }
|
|
|
| -void PluginInstance::DeliverSamples(PP_Instance instance,
|
| - PP_Resource audio_frames,
|
| - const PP_DecryptedBlockInfo* block_info) {
|
| +void PluginInstanceImpl::DeliverSamples(
|
| + PP_Instance instance,
|
| + PP_Resource audio_frames,
|
| + const PP_DecryptedBlockInfo* block_info) {
|
| content_decryptor_delegate_->DeliverSamples(audio_frames, block_info);
|
| }
|
|
|
| -void PluginInstance::NumberOfFindResultsChanged(PP_Instance instance,
|
| - int32_t total,
|
| - PP_Bool final_result) {
|
| +void PluginInstanceImpl::NumberOfFindResultsChanged(PP_Instance instance,
|
| + int32_t total,
|
| + PP_Bool final_result) {
|
| DCHECK_NE(find_identifier_, -1);
|
| delegate_->NumberOfFindResultsChanged(find_identifier_, total,
|
| PP_ToBool(final_result));
|
| }
|
|
|
| -void PluginInstance::SelectedFindResultChanged(PP_Instance instance,
|
| - int32_t index) {
|
| +void PluginInstanceImpl::SelectedFindResultChanged(PP_Instance instance,
|
| + int32_t index) {
|
| DCHECK_NE(find_identifier_, -1);
|
| delegate_->SelectedFindResultChanged(find_identifier_, index);
|
| }
|
|
|
| -PP_Bool PluginInstance::IsFullscreen(PP_Instance instance) {
|
| +PP_Bool PluginInstanceImpl::IsFullscreen(PP_Instance instance) {
|
| return PP_FromBool(view_data_.is_fullscreen);
|
| }
|
|
|
| -PP_Bool PluginInstance::SetFullscreen(PP_Instance instance,
|
| - PP_Bool fullscreen) {
|
| +PP_Bool PluginInstanceImpl::SetFullscreen(PP_Instance instance,
|
| + PP_Bool fullscreen) {
|
| return PP_FromBool(SetFullscreen(PP_ToBool(fullscreen)));
|
| }
|
|
|
| -PP_Bool PluginInstance::GetScreenSize(PP_Instance instance, PP_Size* size) {
|
| +PP_Bool PluginInstanceImpl::GetScreenSize(PP_Instance instance, PP_Size* size) {
|
| gfx::Size screen_size = delegate()->GetScreenSize();
|
| *size = PP_MakeSize(screen_size.width(), screen_size.height());
|
| return PP_TRUE;
|
| }
|
|
|
| -::ppapi::Resource* PluginInstance::GetSingletonResource(
|
| +::ppapi::Resource* PluginInstanceImpl::GetSingletonResource(
|
| PP_Instance instance,
|
| ::ppapi::SingletonResourceID id) {
|
| // Flash APIs and some others aren't implemented in-process.
|
| @@ -2236,30 +2154,31 @@
|
| return NULL;
|
| }
|
|
|
| -int32_t PluginInstance::RequestInputEvents(PP_Instance instance,
|
| - uint32_t event_classes) {
|
| +int32_t PluginInstanceImpl::RequestInputEvents(PP_Instance instance,
|
| + uint32_t event_classes) {
|
| input_event_mask_ |= event_classes;
|
| filtered_input_event_mask_ &= ~(event_classes);
|
| RequestInputEventsHelper(event_classes);
|
| return ValidateRequestInputEvents(false, event_classes);
|
| }
|
|
|
| -int32_t PluginInstance::RequestFilteringInputEvents(PP_Instance instance,
|
| - uint32_t event_classes) {
|
| +int32_t PluginInstanceImpl::RequestFilteringInputEvents(
|
| + PP_Instance instance,
|
| + uint32_t event_classes) {
|
| filtered_input_event_mask_ |= event_classes;
|
| input_event_mask_ &= ~(event_classes);
|
| RequestInputEventsHelper(event_classes);
|
| return ValidateRequestInputEvents(true, event_classes);
|
| }
|
|
|
| -void PluginInstance::ClearInputEventRequest(PP_Instance instance,
|
| - uint32_t event_classes) {
|
| +void PluginInstanceImpl::ClearInputEventRequest(PP_Instance instance,
|
| + uint32_t event_classes) {
|
| input_event_mask_ &= ~(event_classes);
|
| filtered_input_event_mask_ &= ~(event_classes);
|
| RequestInputEventsHelper(event_classes);
|
| }
|
|
|
| -void PluginInstance::ZoomChanged(PP_Instance instance, double factor) {
|
| +void PluginInstanceImpl::ZoomChanged(PP_Instance instance, double factor) {
|
| // We only want to tell the page to change its zoom if the whole page is the
|
| // plugin. If we're in an iframe, then don't do anything.
|
| if (!IsFullPagePlugin())
|
| @@ -2267,9 +2186,9 @@
|
| container()->zoomLevelChanged(WebView::zoomFactorToZoomLevel(factor));
|
| }
|
|
|
| -void PluginInstance::ZoomLimitsChanged(PP_Instance instance,
|
| - double minimum_factor,
|
| - double maximium_factor) {
|
| +void PluginInstanceImpl::ZoomLimitsChanged(PP_Instance instance,
|
| + double minimum_factor,
|
| + double maximium_factor) {
|
| if (minimum_factor > maximium_factor) {
|
| NOTREACHED();
|
| return;
|
| @@ -2277,14 +2196,14 @@
|
| delegate()->ZoomLimitsChanged(minimum_factor, maximium_factor);
|
| }
|
|
|
| -void PluginInstance::PostMessage(PP_Instance instance, PP_Var message) {
|
| +void PluginInstanceImpl::PostMessage(PP_Instance instance, PP_Var message) {
|
| message_channel_->PostMessageToJavaScript(message);
|
| }
|
|
|
| -PP_Bool PluginInstance::SetCursor(PP_Instance instance,
|
| - PP_MouseCursor_Type type,
|
| - PP_Resource image,
|
| - const PP_Point* hot_spot) {
|
| +PP_Bool PluginInstanceImpl::SetCursor(PP_Instance instance,
|
| + PP_MouseCursor_Type type,
|
| + PP_Resource image,
|
| + const PP_Point* hot_spot) {
|
| if (!ValidateSetCursorParams(type, image, hot_spot))
|
| return PP_FALSE;
|
|
|
| @@ -2320,8 +2239,8 @@
|
| return PP_TRUE;
|
| }
|
|
|
| -int32_t PluginInstance::LockMouse(PP_Instance instance,
|
| - scoped_refptr<TrackedCallback> callback) {
|
| +int32_t PluginInstanceImpl::LockMouse(PP_Instance instance,
|
| + scoped_refptr<TrackedCallback> callback) {
|
| if (TrackedCallback::IsPending(lock_mouse_callback_))
|
| return PP_ERROR_INPROGRESS;
|
|
|
| @@ -2349,12 +2268,12 @@
|
| return PP_OK_COMPLETIONPENDING;
|
| }
|
|
|
| -void PluginInstance::UnlockMouse(PP_Instance instance) {
|
| +void PluginInstanceImpl::UnlockMouse(PP_Instance instance) {
|
| delegate()->UnlockMouse(this);
|
| }
|
|
|
| -void PluginInstance::SetTextInputType(PP_Instance instance,
|
| - PP_TextInput_Type type) {
|
| +void PluginInstanceImpl::SetTextInputType(PP_Instance instance,
|
| + PP_TextInput_Type type) {
|
| int itype = type;
|
| if (itype < 0 || itype > ui::TEXT_INPUT_TYPE_URL)
|
| itype = ui::TEXT_INPUT_TYPE_NONE;
|
| @@ -2362,20 +2281,20 @@
|
| delegate()->PluginTextInputTypeChanged(this);
|
| }
|
|
|
| -void PluginInstance::UpdateCaretPosition(PP_Instance instance,
|
| - const PP_Rect& caret,
|
| - const PP_Rect& bounding_box) {
|
| +void PluginInstanceImpl::UpdateCaretPosition(PP_Instance instance,
|
| + const PP_Rect& caret,
|
| + const PP_Rect& bounding_box) {
|
| text_input_caret_ = PP_ToGfxRect(caret);
|
| text_input_caret_bounds_ = PP_ToGfxRect(bounding_box);
|
| text_input_caret_set_ = true;
|
| delegate()->PluginCaretPositionChanged(this);
|
| }
|
|
|
| -void PluginInstance::CancelCompositionText(PP_Instance instance) {
|
| +void PluginInstanceImpl::CancelCompositionText(PP_Instance instance) {
|
| delegate()->PluginRequestedCancelComposition(this);
|
| }
|
|
|
| -void PluginInstance::SelectionChanged(PP_Instance instance) {
|
| +void PluginInstanceImpl::SelectionChanged(PP_Instance instance) {
|
| // TODO(kinaba): currently the browser always calls RequestSurroundingText.
|
| // It can be optimized so that it won't call it back until the information
|
| // is really needed.
|
| @@ -2386,22 +2305,22 @@
|
| // lifetime of the instance.
|
| base::MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(&PluginInstance::RequestSurroundingText,
|
| + base::Bind(&PluginInstanceImpl::RequestSurroundingText,
|
| AsWeakPtr(),
|
| static_cast<size_t>(kExtraCharsForTextInput)));
|
| }
|
|
|
| -void PluginInstance::UpdateSurroundingText(PP_Instance instance,
|
| - const char* text,
|
| - uint32_t caret,
|
| - uint32_t anchor) {
|
| +void PluginInstanceImpl::UpdateSurroundingText(PP_Instance instance,
|
| + const char* text,
|
| + uint32_t caret,
|
| + uint32_t anchor) {
|
| surrounding_text_ = text;
|
| selection_caret_ = caret;
|
| selection_anchor_ = anchor;
|
| delegate()->PluginSelectionChanged(this);
|
| }
|
|
|
| -PP_Var PluginInstance::ResolveRelativeToDocument(
|
| +PP_Var PluginInstanceImpl::ResolveRelativeToDocument(
|
| PP_Instance instance,
|
| PP_Var relative,
|
| PP_URLComponents_Dev* components) {
|
| @@ -2416,7 +2335,8 @@
|
| components);
|
| }
|
|
|
| -PP_Bool PluginInstance::DocumentCanRequest(PP_Instance instance, PP_Var url) {
|
| +PP_Bool PluginInstanceImpl::DocumentCanRequest(PP_Instance instance,
|
| + PP_Var url) {
|
| StringVar* url_string = StringVar::FromPPVar(url);
|
| if (!url_string)
|
| return PP_FALSE;
|
| @@ -2432,8 +2352,8 @@
|
| return BoolToPPBool(security_origin.canRequest(gurl));
|
| }
|
|
|
| -PP_Bool PluginInstance::DocumentCanAccessDocument(PP_Instance instance,
|
| - PP_Instance target) {
|
| +PP_Bool PluginInstanceImpl::DocumentCanAccessDocument(PP_Instance instance,
|
| + PP_Instance target) {
|
| WebKit::WebSecurityOrigin our_origin;
|
| if (!SecurityOriginForInstance(instance, &our_origin))
|
| return PP_FALSE;
|
| @@ -2445,21 +2365,21 @@
|
| return BoolToPPBool(our_origin.canAccess(target_origin));
|
| }
|
|
|
| -PP_Var PluginInstance::GetDocumentURL(PP_Instance instance,
|
| - PP_URLComponents_Dev* components) {
|
| +PP_Var PluginInstanceImpl::GetDocumentURL(PP_Instance instance,
|
| + PP_URLComponents_Dev* components) {
|
| WebKit::WebDocument document = container()->element().document();
|
| return ::ppapi::PPB_URLUtil_Shared::GenerateURLReturn(document.url(),
|
| components);
|
| }
|
|
|
| -PP_Var PluginInstance::GetPluginInstanceURL(
|
| +PP_Var PluginInstanceImpl::GetPluginInstanceURL(
|
| PP_Instance instance,
|
| PP_URLComponents_Dev* components) {
|
| return ::ppapi::PPB_URLUtil_Shared::GenerateURLReturn(plugin_url_,
|
| components);
|
| }
|
|
|
| -PP_ExternalPluginResult PluginInstance::ResetAsProxied(
|
| +PP_ExternalPluginResult PluginInstanceImpl::ResetAsProxied(
|
| scoped_refptr<PluginModule> module) {
|
| // Save the original module and switch over to the new one now that this
|
| // plugin is using the IPC-based proxy.
|
| @@ -2530,17 +2450,17 @@
|
| return PP_EXTERNAL_PLUGIN_OK;
|
| }
|
|
|
| -bool PluginInstance::IsValidInstanceOf(PluginModule* module) {
|
| +bool PluginInstanceImpl::IsValidInstanceOf(PluginModule* module) {
|
| DCHECK(module);
|
| return module == module_.get() ||
|
| module == original_module_.get();
|
| }
|
|
|
| -NPP PluginInstance::instanceNPP() {
|
| +NPP PluginInstanceImpl::instanceNPP() {
|
| return npp_.get();
|
| }
|
|
|
| -v8::Isolate* PluginInstance::GetIsolate() const {
|
| +v8::Isolate* PluginInstanceImpl::GetIsolate() const {
|
| return isolate_;
|
| }
|
|
|
| @@ -2548,11 +2468,27 @@
|
| return HostGlobals::Get()->GetInstance(instance_id);
|
| }
|
|
|
| -::ppapi::VarTracker* PluginInstance::GetVarTracker() {
|
| +content::RenderView* PluginInstanceImpl::GetRenderView() {
|
| + return render_view_;
|
| +}
|
| +
|
| +WebKit::WebPluginContainer* PluginInstanceImpl::GetContainer() {
|
| + return container_;
|
| +}
|
| +
|
| +::ppapi::VarTracker* PluginInstanceImpl::GetVarTracker() {
|
| return HostGlobals::Get()->GetVarTracker();
|
| }
|
|
|
| -PP_Resource PluginInstance::CreateExternalFileReference(
|
| +const GURL& PluginInstanceImpl::GetPluginURL() {
|
| + return plugin_url_;
|
| +}
|
| +
|
| +base::FilePath PluginInstanceImpl::GetModulePath() {
|
| + return module_->path();
|
| +}
|
| +
|
| +PP_Resource PluginInstanceImpl::CreateExternalFileReference(
|
| const base::FilePath& external_file_path) {
|
| webkit::ppapi::PPB_FileRef_Impl* ref =
|
| webkit::ppapi::PPB_FileRef_Impl::CreateExternal(
|
| @@ -2560,8 +2496,8 @@
|
| return ref->GetReference();
|
| }
|
|
|
| -PP_Resource PluginInstance::CreateImage(gfx::ImageSkia* source_image,
|
| - float scale) {
|
| +PP_Resource PluginInstanceImpl::CreateImage(gfx::ImageSkia* source_image,
|
| + float scale) {
|
| ui::ScaleFactor scale_factor = ui::GetScaleFactorFromScale(scale);
|
| gfx::ImageSkiaRep image_skia_rep = source_image->GetRepresentation(
|
| scale_factor);
|
| @@ -2593,11 +2529,7 @@
|
| return image_data->GetReference();
|
| }
|
|
|
| -base::FilePath PluginInstance::GetModulePath() {
|
| - return module_->path();
|
| -}
|
| -
|
| -PP_ExternalPluginResult PluginInstance::SwitchToOutOfProcessProxy(
|
| +PP_ExternalPluginResult PluginInstanceImpl::SwitchToOutOfProcessProxy(
|
| const base::FilePath& file_path,
|
| ::ppapi::PpapiPermissions permissions,
|
| const IPC::ChannelHandle& channel_handle,
|
| @@ -2627,7 +2559,11 @@
|
| return external_plugin_module->InitAsProxiedExternalPlugin(this);
|
| }
|
|
|
| -void PluginInstance::DoSetCursor(WebCursorInfo* cursor) {
|
| +void PluginInstanceImpl::SetAlwaysOnTop(bool on_top) {
|
| + always_on_top_ = on_top;
|
| +}
|
| +
|
| +void PluginInstanceImpl::DoSetCursor(WebCursorInfo* cursor) {
|
| cursor_.reset(cursor);
|
| if (fullscreen_container_) {
|
| fullscreen_container_->DidChangeCursor(*cursor);
|
| @@ -2636,8 +2572,96 @@
|
| }
|
| }
|
|
|
| -bool PluginInstance::CanAccessMainFrame() const {
|
| +bool PluginInstanceImpl::IsFullPagePlugin() {
|
| + WebFrame* frame = container()->element().document().frame();
|
| + return frame->view()->mainFrame()->document().isPluginDocument();
|
| +}
|
| +
|
| +void PluginInstanceImpl::FlashSetFullscreen(bool fullscreen,
|
| + bool delay_report) {
|
| + TRACE_EVENT0("ppapi", "PluginInstanceImpl::FlashSetFullscreen");
|
| + // Keep a reference on the stack. See NOTE above.
|
| + scoped_refptr<PluginInstanceImpl> ref(this);
|
| +
|
| + // We check whether we are trying to switch to the state we're already going
|
| + // to (i.e. if we're already switching to fullscreen but the fullscreen
|
| + // container isn't ready yet, don't do anything more).
|
| + if (fullscreen == FlashIsFullscreenOrPending())
|
| + return;
|
| +
|
| + // Unbind current 2D or 3D graphics context.
|
| + VLOG(1) << "Setting fullscreen to " << (fullscreen ? "on" : "off");
|
| + if (fullscreen) {
|
| + DCHECK(!fullscreen_container_);
|
| + fullscreen_container_ = delegate_->CreateFullscreenContainer(this);
|
| + UpdateLayer();
|
| + } else {
|
| + DCHECK(fullscreen_container_);
|
| + fullscreen_container_->Destroy();
|
| + fullscreen_container_ = NULL;
|
| + UpdateFlashFullscreenState(false);
|
| + if (!delay_report) {
|
| + ReportGeometry();
|
| + } else {
|
| + base::MessageLoop::current()->PostTask(
|
| + FROM_HERE, base::Bind(&PluginInstanceImpl::ReportGeometry, this));
|
| + }
|
| + }
|
| +}
|
| +
|
| +bool PluginInstanceImpl::IsRectTopmost(const gfx::Rect& rect) {
|
| + if (flash_fullscreen_)
|
| + return true;
|
| +
|
| + return container_->isRectTopmost(rect);
|
| +}
|
| +
|
| +int32_t PluginInstanceImpl::Navigate(const ::ppapi::URLRequestInfoData& request,
|
| + const char* target,
|
| + bool from_user_action) {
|
| if (!container_)
|
| + return PP_ERROR_FAILED;
|
| +
|
| + WebDocument document = container_->element().document();
|
| + WebFrame* frame = document.frame();
|
| + if (!frame)
|
| + return PP_ERROR_FAILED;
|
| +
|
| + ::ppapi::URLRequestInfoData completed_request = request;
|
| +
|
| + WebURLRequest web_request;
|
| + if (!CreateWebURLRequest(&completed_request, frame, &web_request))
|
| + return PP_ERROR_FAILED;
|
| + web_request.setFirstPartyForCookies(document.firstPartyForCookies());
|
| + web_request.setHasUserGesture(from_user_action);
|
| +
|
| + GURL gurl(web_request.url());
|
| + if (gurl.SchemeIs("javascript")) {
|
| + // In imitation of the NPAPI implementation, only |target_frame == frame| is
|
| + // allowed for security reasons.
|
| + WebFrame* target_frame =
|
| + frame->view()->findFrameByName(WebString::fromUTF8(target), frame);
|
| + if (target_frame != frame)
|
| + return PP_ERROR_NOACCESS;
|
| +
|
| + // TODO(viettrungluu): NPAPI sends the result back to the plugin -- do we
|
| + // need that?
|
| + WebString result = container_->executeScriptURL(gurl, from_user_action);
|
| + return result.isNull() ? PP_ERROR_FAILED : PP_OK;
|
| + }
|
| +
|
| + // Only GETs and POSTs are supported.
|
| + if (web_request.httpMethod() != "GET" &&
|
| + web_request.httpMethod() != "POST")
|
| + return PP_ERROR_BADARGUMENT;
|
| +
|
| + WebString target_str = WebString::fromUTF8(target);
|
| + container_->loadFrameRequest(web_request, target_str, false, NULL);
|
| + return PP_OK;
|
| +}
|
| +
|
| +bool PluginInstanceImpl::CanAccessMainFrame() const {
|
| + if (!container_)
|
| return false;
|
| WebKit::WebDocument containing_document = container_->element().document();
|
|
|
| @@ -2653,7 +2677,7 @@
|
| main_document.securityOrigin());
|
| }
|
|
|
| -void PluginInstance::KeepSizeAttributesBeforeFullscreen() {
|
| +void PluginInstanceImpl::KeepSizeAttributesBeforeFullscreen() {
|
| WebElement element = container_->element();
|
| width_before_fullscreen_ = element.getAttribute(WebString::fromUTF8(kWidth));
|
| height_before_fullscreen_ =
|
| @@ -2663,7 +2687,7 @@
|
| style_before_fullscreen_ = element.getAttribute(WebString::fromUTF8(kStyle));
|
| }
|
|
|
| -void PluginInstance::SetSizeAttributesForFullscreen() {
|
| +void PluginInstanceImpl::SetSizeAttributesForFullscreen() {
|
| screen_size_for_fullscreen_ = delegate()->GetScreenSize();
|
| std::string width = StringPrintf("%d", screen_size_for_fullscreen_.width());
|
| std::string height = StringPrintf("%d", screen_size_for_fullscreen_.height());
|
| @@ -2686,7 +2710,7 @@
|
| container_->element().setAttribute(kStyle, WebString::fromUTF8(style));
|
| }
|
|
|
| -void PluginInstance::ResetSizeAttributesAfterFullscreen() {
|
| +void PluginInstanceImpl::ResetSizeAttributesAfterFullscreen() {
|
| screen_size_for_fullscreen_ = gfx::Size();
|
| WebElement element = container_->element();
|
| element.setAttribute(WebString::fromUTF8(kWidth), width_before_fullscreen_);
|
|
|