Index: webkit/plugins/ppapi/ppapi_webplugin_impl.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_webplugin_impl.cc (revision 213561) |
+++ webkit/plugins/ppapi/ppapi_webplugin_impl.cc (working copy) |
@@ -1,308 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "webkit/plugins/ppapi/ppapi_webplugin_impl.h" |
- |
-#include <cmath> |
- |
-#include "base/debug/crash_logging.h" |
-#include "base/message_loop/message_loop.h" |
-#include "ppapi/shared_impl/ppapi_globals.h" |
-#include "ppapi/shared_impl/var_tracker.h" |
-#include "third_party/WebKit/public/platform/WebPoint.h" |
-#include "third_party/WebKit/public/platform/WebRect.h" |
-#include "third_party/WebKit/public/platform/WebSize.h" |
-#include "third_party/WebKit/public/platform/WebURLLoaderClient.h" |
-#include "third_party/WebKit/public/web/WebBindings.h" |
-#include "third_party/WebKit/public/web/WebDocument.h" |
-#include "third_party/WebKit/public/web/WebElement.h" |
-#include "third_party/WebKit/public/web/WebFrame.h" |
-#include "third_party/WebKit/public/web/WebPluginContainer.h" |
-#include "third_party/WebKit/public/web/WebPluginParams.h" |
-#include "third_party/WebKit/public/web/WebPrintParams.h" |
-#include "third_party/WebKit/public/web/WebPrintScalingOption.h" |
-#include "third_party/WebKit/public/web/WebView.h" |
-#include "url/gurl.h" |
-#include "webkit/plugins/ppapi/message_channel.h" |
-#include "webkit/plugins/ppapi/npobject_var.h" |
-#include "webkit/plugins/ppapi/plugin_module.h" |
-#include "webkit/plugins/ppapi/ppapi_plugin_instance_impl.h" |
- |
-using ppapi::NPObjectVar; |
-using WebKit::WebCanvas; |
-using WebKit::WebPlugin; |
-using WebKit::WebPluginContainer; |
-using WebKit::WebPluginParams; |
-using WebKit::WebPoint; |
-using WebKit::WebPrintParams; |
-using WebKit::WebRect; |
-using WebKit::WebSize; |
-using WebKit::WebString; |
-using WebKit::WebURL; |
-using WebKit::WebVector; |
-using WebKit::WebView; |
- |
-namespace webkit { |
-namespace ppapi { |
- |
-struct WebPluginImpl::InitData { |
- scoped_refptr<PluginModule> module; |
- base::WeakPtr<PluginDelegate> delegate; |
- base::WeakPtr<content::RenderView> render_view; |
- std::vector<std::string> arg_names; |
- std::vector<std::string> arg_values; |
- GURL url; |
-}; |
- |
-WebPluginImpl::WebPluginImpl( |
- PluginModule* plugin_module, |
- const WebPluginParams& params, |
- const base::WeakPtr<PluginDelegate>& plugin_delegate, |
- const base::WeakPtr<content::RenderView>& render_view) |
- : init_data_(new InitData()), |
- full_frame_(params.loadManually), |
- instance_object_(PP_MakeUndefined()), |
- container_(NULL) { |
- DCHECK(plugin_module); |
- init_data_->module = plugin_module; |
- init_data_->delegate = plugin_delegate; |
- init_data_->render_view = render_view; |
- for (size_t i = 0; i < params.attributeNames.size(); ++i) { |
- init_data_->arg_names.push_back(params.attributeNames[i].utf8()); |
- init_data_->arg_values.push_back(params.attributeValues[i].utf8()); |
- } |
- init_data_->url = params.url; |
- |
- // Set subresource URL for crash reporting. |
- base::debug::SetCrashKeyValue("subresource_url", init_data_->url.spec()); |
-} |
- |
-WebPluginImpl::~WebPluginImpl() { |
-} |
- |
-WebKit::WebPluginContainer* WebPluginImpl::container() const { |
- return container_; |
-} |
- |
-bool WebPluginImpl::initialize(WebPluginContainer* container) { |
- // The plugin delegate may have gone away. |
- if (!init_data_->delegate.get()) |
- return false; |
- |
- instance_ = init_data_->module->CreateInstance( |
- init_data_->delegate.get(), init_data_->render_view.get(), container, |
- init_data_->url); |
- if (!instance_.get()) |
- return false; |
- |
- // Enable script objects for this plugin. |
- container->allowScriptObjects(); |
- |
- bool success = instance_->Initialize(init_data_->arg_names, |
- init_data_->arg_values, |
- full_frame_); |
- if (!success) { |
- instance_->Delete(); |
- instance_ = NULL; |
- |
- WebKit::WebPlugin* replacement_plugin = |
- init_data_->delegate->CreatePluginReplacement( |
- init_data_->module->path()); |
- if (!replacement_plugin || !replacement_plugin->initialize(container)) |
- return false; |
- |
- container->setPlugin(replacement_plugin); |
- return true; |
- } |
- |
- init_data_.reset(); |
- container_ = container; |
- return true; |
-} |
- |
-void WebPluginImpl::destroy() { |
- // Tell |container_| to clear references to this plugin's script objects. |
- if (container_) |
- container_->clearScriptObjects(); |
- |
- if (instance_.get()) { |
- ::ppapi::PpapiGlobals::Get()->GetVarTracker()->ReleaseVar(instance_object_); |
- instance_object_ = PP_MakeUndefined(); |
- instance_->Delete(); |
- instance_ = NULL; |
- } |
- |
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
-} |
- |
-NPObject* WebPluginImpl::scriptableObject() { |
- // Call through the plugin to get its instance object. The plugin should pass |
- // us a reference which we release in destroy(). |
- if (instance_object_.type == PP_VARTYPE_UNDEFINED) |
- instance_object_ = instance_->GetInstanceObject(); |
- // GetInstanceObject talked to the plugin which may have removed the instance |
- // from the DOM, in which case instance_ would be NULL now. |
- if (!instance_.get()) |
- return NULL; |
- |
- scoped_refptr<NPObjectVar> object(NPObjectVar::FromPPVar(instance_object_)); |
- // If there's an InstanceObject, tell the Instance's MessageChannel to pass |
- // any non-postMessage calls to it. |
- if (object.get()) { |
- instance_->message_channel().SetPassthroughObject(object->np_object()); |
- } |
- NPObject* message_channel_np_object(instance_->message_channel().np_object()); |
- // The object is expected to be retained before it is returned. |
- WebKit::WebBindings::retainObject(message_channel_np_object); |
- return message_channel_np_object; |
-} |
- |
-NPP WebPluginImpl::pluginNPP() { |
- return instance_->instanceNPP(); |
-} |
- |
-bool WebPluginImpl::getFormValue(WebString& value) { |
- return false; |
-} |
- |
-void WebPluginImpl::paint(WebCanvas* canvas, const WebRect& rect) { |
- if (!instance_->FlashIsFullscreenOrPending()) |
- instance_->Paint(canvas, plugin_rect_, rect); |
-} |
- |
-void WebPluginImpl::updateGeometry( |
- const WebRect& window_rect, |
- const WebRect& clip_rect, |
- const WebVector<WebRect>& cut_outs_rects, |
- bool is_visible) { |
- plugin_rect_ = window_rect; |
- if (!instance_->FlashIsFullscreenOrPending()) { |
- std::vector<gfx::Rect> cut_outs; |
- for (size_t i = 0; i < cut_outs_rects.size(); ++i) |
- cut_outs.push_back(cut_outs_rects[i]); |
- instance_->ViewChanged(plugin_rect_, clip_rect, cut_outs); |
- } |
-} |
- |
-void WebPluginImpl::updateFocus(bool focused) { |
- instance_->SetWebKitFocus(focused); |
-} |
- |
-void WebPluginImpl::updateVisibility(bool visible) { |
-} |
- |
-bool WebPluginImpl::acceptsInputEvents() { |
- return true; |
-} |
- |
-bool WebPluginImpl::handleInputEvent(const WebKit::WebInputEvent& event, |
- WebKit::WebCursorInfo& cursor_info) { |
- if (instance_->FlashIsFullscreenOrPending()) |
- return false; |
- return instance_->HandleInputEvent(event, &cursor_info); |
-} |
- |
-void WebPluginImpl::didReceiveResponse( |
- const WebKit::WebURLResponse& response) { |
- DCHECK(!instance_->document_loader()); |
- instance_->HandleDocumentLoad(response); |
-} |
- |
-void WebPluginImpl::didReceiveData(const char* data, int data_length) { |
- WebKit::WebURLLoaderClient* document_loader = instance_->document_loader(); |
- if (document_loader) |
- document_loader->didReceiveData(NULL, data, data_length, 0); |
-} |
- |
-void WebPluginImpl::didFinishLoading() { |
- WebKit::WebURLLoaderClient* document_loader = instance_->document_loader(); |
- if (document_loader) |
- document_loader->didFinishLoading(NULL, 0.0); |
-} |
- |
-void WebPluginImpl::didFailLoading(const WebKit::WebURLError& error) { |
- WebKit::WebURLLoaderClient* document_loader = instance_->document_loader(); |
- if (document_loader) |
- document_loader->didFail(NULL, error); |
-} |
- |
-void WebPluginImpl::didFinishLoadingFrameRequest(const WebKit::WebURL& url, |
- void* notify_data) { |
-} |
- |
-void WebPluginImpl::didFailLoadingFrameRequest( |
- const WebKit::WebURL& url, |
- void* notify_data, |
- const WebKit::WebURLError& error) { |
-} |
- |
-bool WebPluginImpl::hasSelection() const { |
- return !selectionAsText().isEmpty(); |
-} |
- |
-WebString WebPluginImpl::selectionAsText() const { |
- return instance_->GetSelectedText(false); |
-} |
- |
-WebString WebPluginImpl::selectionAsMarkup() const { |
- return instance_->GetSelectedText(true); |
-} |
- |
-WebURL WebPluginImpl::linkAtPosition(const WebPoint& position) const { |
- return GURL(instance_->GetLinkAtPosition(position)); |
-} |
- |
-void WebPluginImpl::setZoomLevel(double level, bool text_only) { |
- instance_->Zoom(WebView::zoomLevelToZoomFactor(level), text_only); |
-} |
- |
-bool WebPluginImpl::startFind(const WebKit::WebString& search_text, |
- bool case_sensitive, |
- int identifier) { |
- return instance_->StartFind(search_text, case_sensitive, identifier); |
-} |
- |
-void WebPluginImpl::selectFindResult(bool forward) { |
- instance_->SelectFindResult(forward); |
-} |
- |
-void WebPluginImpl::stopFind() { |
- instance_->StopFind(); |
-} |
- |
-bool WebPluginImpl::supportsPaginatedPrint() { |
- return instance_->SupportsPrintInterface(); |
-} |
- |
-bool WebPluginImpl::isPrintScalingDisabled() { |
- return instance_->IsPrintScalingDisabled(); |
-} |
- |
-int WebPluginImpl::printBegin(const WebPrintParams& print_params) { |
- return instance_->PrintBegin(print_params); |
-} |
- |
-bool WebPluginImpl::printPage(int page_number, |
- WebKit::WebCanvas* canvas) { |
- return instance_->PrintPage(page_number, canvas); |
-} |
- |
-void WebPluginImpl::printEnd() { |
- return instance_->PrintEnd(); |
-} |
- |
-bool WebPluginImpl::canRotateView() { |
- return instance_->CanRotateView(); |
-} |
- |
-void WebPluginImpl::rotateView(RotationType type) { |
- instance_->RotateView(type); |
-} |
- |
-bool WebPluginImpl::isPlaceholder() { |
- return false; |
-} |
- |
-} // namespace ppapi |
-} // namespace webkit |