OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2014 Opera Software ASA. All rights reserved. |
3 * | 4 * |
4 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
6 * met: | 7 * met: |
7 * | 8 * |
8 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 11 * * Redistributions in binary form must reproduce the above |
11 * copyright notice, this list of conditions and the following disclaimer | 12 * copyright notice, this list of conditions and the following disclaimer |
12 * in the documentation and/or other materials provided with the | 13 * in the documentation and/or other materials provided with the |
(...skipping 12 matching lines...) Expand all Loading... |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 30 */ |
30 | 31 |
31 #include "config.h" | 32 #include "config.h" |
32 #include "web/WebPluginContainerImpl.h" | 33 #include "web/WebPluginContainerImpl.h" |
33 | 34 |
34 #include "bindings/core/v8/ScriptController.h" | 35 #include "bindings/core/v8/ScriptController.h" |
| 36 #include "bindings/core/v8/V8Element.h" |
| 37 #include "bindings/core/v8/V8NPObject.h" |
35 #include "core/HTMLNames.h" | 38 #include "core/HTMLNames.h" |
36 #include "core/clipboard/DataObject.h" | 39 #include "core/clipboard/DataObject.h" |
37 #include "core/clipboard/DataTransfer.h" | 40 #include "core/clipboard/DataTransfer.h" |
38 #include "core/events/GestureEvent.h" | 41 #include "core/events/GestureEvent.h" |
39 #include "core/events/KeyboardEvent.h" | 42 #include "core/events/KeyboardEvent.h" |
40 #include "core/events/MouseEvent.h" | 43 #include "core/events/MouseEvent.h" |
41 #include "core/events/TouchEvent.h" | 44 #include "core/events/TouchEvent.h" |
42 #include "core/events/WheelEvent.h" | 45 #include "core/events/WheelEvent.h" |
43 #include "core/frame/FrameView.h" | 46 #include "core/frame/FrameView.h" |
44 #include "core/frame/LocalFrame.h" | 47 #include "core/frame/LocalFrame.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 #include "public/web/WebElement.h" | 84 #include "public/web/WebElement.h" |
82 #include "public/web/WebInputEvent.h" | 85 #include "public/web/WebInputEvent.h" |
83 #include "public/web/WebPlugin.h" | 86 #include "public/web/WebPlugin.h" |
84 #include "public/web/WebPrintParams.h" | 87 #include "public/web/WebPrintParams.h" |
85 #include "public/web/WebViewClient.h" | 88 #include "public/web/WebViewClient.h" |
86 #include "web/ChromeClientImpl.h" | 89 #include "web/ChromeClientImpl.h" |
87 #include "web/ScrollbarGroup.h" | 90 #include "web/ScrollbarGroup.h" |
88 #include "web/WebDataSourceImpl.h" | 91 #include "web/WebDataSourceImpl.h" |
89 #include "web/WebInputEventConversion.h" | 92 #include "web/WebInputEventConversion.h" |
90 #include "web/WebViewImpl.h" | 93 #include "web/WebViewImpl.h" |
| 94 #include "wtf/Assertions.h" |
91 | 95 |
92 | 96 |
93 using namespace blink; | 97 using namespace blink; |
94 | 98 |
95 namespace blink { | 99 namespace blink { |
96 | 100 |
97 // Public methods -------------------------------------------------------------- | 101 // Public methods -------------------------------------------------------------- |
98 | 102 |
99 void WebPluginContainerImpl::setFrameRect(const IntRect& frameRect) | 103 void WebPluginContainerImpl::setFrameRect(const IntRect& frameRect) |
100 { | 104 { |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 return; | 438 return; |
435 | 439 |
436 frame()->script().cleanupScriptObjectsForPlugin(this); | 440 frame()->script().cleanupScriptObjectsForPlugin(this); |
437 } | 441 } |
438 | 442 |
439 NPObject* WebPluginContainerImpl::scriptableObjectForElement() | 443 NPObject* WebPluginContainerImpl::scriptableObjectForElement() |
440 { | 444 { |
441 return m_element->getNPObject(); | 445 return m_element->getNPObject(); |
442 } | 446 } |
443 | 447 |
| 448 v8::Local<v8::Object> WebPluginContainerImpl::getV8ObjectForElement() |
| 449 { |
| 450 LocalFrame* frame = m_element->document().frame(); |
| 451 if (!frame) |
| 452 return v8::Local<v8::Object>(); |
| 453 |
| 454 if (!frame->script().canExecuteScripts(NotAboutToExecuteScript)) |
| 455 return v8::Local<v8::Object>(); |
| 456 |
| 457 v8::Isolate* isolate = frame->script().isolate(); |
| 458 v8::EscapableHandleScope handleScope(isolate); |
| 459 v8::Handle<v8::Context> v8Context = toV8Context(frame, DOMWrapperWorld::main
World()); |
| 460 if (v8Context.IsEmpty()) |
| 461 return v8::Local<v8::Object>(); |
| 462 v8::Context::Scope scope(v8Context); |
| 463 |
| 464 v8::Handle<v8::Value> v8value = toV8(m_element, v8::Handle<v8::Object>(), is
olate); |
| 465 if (!v8value->IsObject()) |
| 466 return v8::Local<v8::Object>(); |
| 467 v8::Local<v8::Object> v8object(v8::Handle<v8::Object>::Cast(v8value)); |
| 468 return handleScope.Escape(v8object); |
| 469 } |
| 470 |
444 WebString WebPluginContainerImpl::executeScriptURL(const WebURL& url, bool popup
sAllowed) | 471 WebString WebPluginContainerImpl::executeScriptURL(const WebURL& url, bool popup
sAllowed) |
445 { | 472 { |
446 LocalFrame* frame = m_element->document().frame(); | 473 LocalFrame* frame = m_element->document().frame(); |
447 if (!frame) | 474 if (!frame) |
448 return WebString(); | 475 return WebString(); |
449 | 476 |
450 const KURL& kurl = url; | 477 const KURL& kurl = url; |
451 ASSERT(kurl.protocolIs("javascript")); | 478 ASSERT(kurl.protocolIs("javascript")); |
452 | 479 |
453 String script = decodeURLEscapeSequences( | 480 String script = decodeURLEscapeSequences( |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 void WebPluginContainerImpl::didFailLoading(const ResourceError& error) | 602 void WebPluginContainerImpl::didFailLoading(const ResourceError& error) |
576 { | 603 { |
577 m_webPlugin->didFailLoading(error); | 604 m_webPlugin->didFailLoading(error); |
578 } | 605 } |
579 | 606 |
580 WebLayer* WebPluginContainerImpl::platformLayer() const | 607 WebLayer* WebPluginContainerImpl::platformLayer() const |
581 { | 608 { |
582 return m_webLayer; | 609 return m_webLayer; |
583 } | 610 } |
584 | 611 |
585 NPObject* WebPluginContainerImpl::scriptableObject() | 612 void WebPluginContainerImpl::getScriptableObject(v8::Isolate* isolate, v8::Local
<v8::Object>* object) |
586 { | 613 { |
587 return m_webPlugin->scriptableObject(); | 614 if (m_webPlugin->getScriptableObject(isolate, object)) { |
| 615 // blink::WebPlugin implementation can't provide the obsolete NPObject a
t the same time: |
| 616 ASSERT(!m_webPlugin->scriptableObject()); |
| 617 return; |
| 618 } |
| 619 |
| 620 NPObject* npObject = m_webPlugin->scriptableObject(); |
| 621 if (npObject) |
| 622 *object = blink::createV8ObjectForNPObject(npObject, 0, isolate); |
588 } | 623 } |
589 | 624 |
590 bool WebPluginContainerImpl::getFormValue(String& value) | 625 bool WebPluginContainerImpl::getFormValue(String& value) |
591 { | 626 { |
592 WebString webValue; | 627 WebString webValue; |
593 if (m_webPlugin->getFormValue(webValue)) { | 628 if (m_webPlugin->getFormValue(webValue)) { |
594 value = webValue; | 629 value = webValue; |
595 return true; | 630 return true; |
596 } | 631 } |
597 return false; | 632 return false; |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
941 | 976 |
942 return clipRect; | 977 return clipRect; |
943 } | 978 } |
944 | 979 |
945 bool WebPluginContainerImpl::pluginShouldPersist() const | 980 bool WebPluginContainerImpl::pluginShouldPersist() const |
946 { | 981 { |
947 return m_webPlugin->shouldPersist(); | 982 return m_webPlugin->shouldPersist(); |
948 } | 983 } |
949 | 984 |
950 } // namespace blink | 985 } // namespace blink |
OLD | NEW |