| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 #include "bindings/core/v8/ScriptValue.h" | 93 #include "bindings/core/v8/ScriptValue.h" |
| 94 #include "bindings/core/v8/V8Binding.h" | 94 #include "bindings/core/v8/V8Binding.h" |
| 95 #include "bindings/core/v8/V8GCController.h" | 95 #include "bindings/core/v8/V8GCController.h" |
| 96 #include "bindings/core/v8/V8PerIsolateData.h" | 96 #include "bindings/core/v8/V8PerIsolateData.h" |
| 97 #include "core/HTMLNames.h" | 97 #include "core/HTMLNames.h" |
| 98 #include "core/dom/Document.h" | 98 #include "core/dom/Document.h" |
| 99 #include "core/dom/IconURL.h" | 99 #include "core/dom/IconURL.h" |
| 100 #include "core/dom/MessagePort.h" | 100 #include "core/dom/MessagePort.h" |
| 101 #include "core/dom/Node.h" | 101 #include "core/dom/Node.h" |
| 102 #include "core/dom/NodeTraversal.h" | 102 #include "core/dom/NodeTraversal.h" |
| 103 #include "core/dom/SuspendableScriptRunner.h" |
| 103 #include "core/dom/shadow/ShadowRoot.h" | 104 #include "core/dom/shadow/ShadowRoot.h" |
| 104 #include "core/editing/Editor.h" | 105 #include "core/editing/Editor.h" |
| 105 #include "core/editing/FrameSelection.h" | 106 #include "core/editing/FrameSelection.h" |
| 106 #include "core/editing/InputMethodController.h" | 107 #include "core/editing/InputMethodController.h" |
| 107 #include "core/editing/PlainTextRange.h" | 108 #include "core/editing/PlainTextRange.h" |
| 108 #include "core/editing/SpellChecker.h" | 109 #include "core/editing/SpellChecker.h" |
| 109 #include "core/editing/TextAffinity.h" | 110 #include "core/editing/TextAffinity.h" |
| 110 #include "core/editing/TextIterator.h" | 111 #include "core/editing/TextIterator.h" |
| 111 #include "core/editing/htmlediting.h" | 112 #include "core/editing/htmlediting.h" |
| 112 #include "core/editing/markup.h" | 113 #include "core/editing/markup.h" |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 } | 290 } |
| 290 | 291 |
| 291 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromNode(LocalFrame* f
rame, const WebNode& node) | 292 WebPluginContainerImpl* WebLocalFrameImpl::pluginContainerFromNode(LocalFrame* f
rame, const WebNode& node) |
| 292 { | 293 { |
| 293 WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame); | 294 WebPluginContainerImpl* pluginContainer = pluginContainerFromFrame(frame); |
| 294 if (pluginContainer) | 295 if (pluginContainer) |
| 295 return pluginContainer; | 296 return pluginContainer; |
| 296 return toWebPluginContainerImpl(node.pluginContainer()); | 297 return toWebPluginContainerImpl(node.pluginContainer()); |
| 297 } | 298 } |
| 298 | 299 |
| 300 Vector<ScriptSourceCode> WebLocalFrameImpl::createSourcesVector(const WebScriptS
ource* sourcesIn, unsigned numSources) |
| 301 { |
| 302 Vector<ScriptSourceCode> sources; |
| 303 for (unsigned i = 0; i < numSources; ++i) { |
| 304 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL
ine), OrdinalNumber::first()); |
| 305 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos
ition)); |
| 306 } |
| 307 return sources; |
| 308 } |
| 309 |
| 299 // Simple class to override some of PrintContext behavior. Some of the methods | 310 // Simple class to override some of PrintContext behavior. Some of the methods |
| 300 // made virtual so that they can be overridden by ChromePluginPrintContext. | 311 // made virtual so that they can be overridden by ChromePluginPrintContext. |
| 301 class ChromePrintContext : public PrintContext { | 312 class ChromePrintContext : public PrintContext { |
| 302 WTF_MAKE_NONCOPYABLE(ChromePrintContext); | 313 WTF_MAKE_NONCOPYABLE(ChromePrintContext); |
| 303 public: | 314 public: |
| 304 ChromePrintContext(LocalFrame* frame) | 315 ChromePrintContext(LocalFrame* frame) |
| 305 : PrintContext(frame) | 316 : PrintContext(frame) |
| 306 , m_printedPageWidth(0) | 317 , m_printedPageWidth(0) |
| 307 { | 318 { |
| 308 } | 319 } |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 699 v8::HandleScope handleScope(toIsolate(frame())); | 710 v8::HandleScope handleScope(toIsolate(frame())); |
| 700 frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, sou
rce.url, position)); | 711 frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, sou
rce.url, position)); |
| 701 } | 712 } |
| 702 | 713 |
| 703 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip
tSource* sourcesIn, unsigned numSources, int extensionGroup) | 714 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip
tSource* sourcesIn, unsigned numSources, int extensionGroup) |
| 704 { | 715 { |
| 705 ASSERT(frame()); | 716 ASSERT(frame()); |
| 706 RELEASE_ASSERT(worldID > 0); | 717 RELEASE_ASSERT(worldID > 0); |
| 707 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); | 718 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); |
| 708 | 719 |
| 709 Vector<ScriptSourceCode> sources; | 720 Vector<ScriptSourceCode> sources = createSourcesVector(sourcesIn, numSources
); |
| 710 for (unsigned i = 0; i < numSources; ++i) { | |
| 711 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL
ine), OrdinalNumber::first()); | |
| 712 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos
ition)); | |
| 713 } | |
| 714 | |
| 715 v8::HandleScope handleScope(toIsolate(frame())); | 721 v8::HandleScope handleScope(toIsolate(frame())); |
| 716 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGr
oup, 0); | 722 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGr
oup, 0); |
| 717 } | 723 } |
| 718 | 724 |
| 719 void WebLocalFrameImpl::setIsolatedWorldSecurityOrigin(int worldID, const WebSec
urityOrigin& securityOrigin) | 725 void WebLocalFrameImpl::setIsolatedWorldSecurityOrigin(int worldID, const WebSec
urityOrigin& securityOrigin) |
| 720 { | 726 { |
| 721 ASSERT(frame()); | 727 ASSERT(frame()); |
| 722 DOMWrapperWorld::setIsolatedWorldSecurityOrigin(worldID, securityOrigin.get(
)); | 728 DOMWrapperWorld::setIsolatedWorldSecurityOrigin(worldID, securityOrigin.get(
)); |
| 723 } | 729 } |
| 724 | 730 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 } | 782 } |
| 777 | 783 |
| 778 v8::Handle<v8::Value> WebLocalFrameImpl::executeScriptAndReturnValue(const WebSc
riptSource& source) | 784 v8::Handle<v8::Value> WebLocalFrameImpl::executeScriptAndReturnValue(const WebSc
riptSource& source) |
| 779 { | 785 { |
| 780 ASSERT(frame()); | 786 ASSERT(frame()); |
| 781 | 787 |
| 782 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi
nalNumber::first()); | 788 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi
nalNumber::first()); |
| 783 return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSource
Code(source.code, source.url, position)); | 789 return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSource
Code(source.code, source.url, position)); |
| 784 } | 790 } |
| 785 | 791 |
| 792 void WebLocalFrameImpl::asyncExecuteScriptAndReturnValue(const WebScriptSource&
sourceIn, WebScriptCallback* callback) |
| 793 { |
| 794 ASSERT(frame()); |
| 795 |
| 796 Vector<ScriptSourceCode> sources = createSourcesVector(&sourceIn, 1); |
| 797 SuspendableScriptRunner* runner = new SuspendableScriptRunner(frame(), 0, so
urces, 0, callback); |
| 798 runner->run(); |
| 799 } |
| 800 |
| 786 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip
tSource* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local
<v8::Value> >* results) | 801 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip
tSource* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local
<v8::Value> >* results) |
| 787 { | 802 { |
| 788 ASSERT(frame()); | 803 ASSERT(frame()); |
| 789 RELEASE_ASSERT(worldID > 0); | 804 RELEASE_ASSERT(worldID > 0); |
| 790 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); | 805 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); |
| 791 | 806 |
| 792 Vector<ScriptSourceCode> sources; | 807 Vector<ScriptSourceCode> sources = createSourcesVector(sourcesIn, numSources
); |
| 793 | |
| 794 for (unsigned i = 0; i < numSources; ++i) { | |
| 795 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL
ine), OrdinalNumber::first()); | |
| 796 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos
ition)); | |
| 797 } | |
| 798 | 808 |
| 799 if (results) { | 809 if (results) { |
| 800 Vector<v8::Local<v8::Value> > scriptResults; | 810 Vector<v8::Local<v8::Value> > scriptResults; |
| 801 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi
onGroup, &scriptResults); | 811 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi
onGroup, &scriptResults); |
| 802 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size()); | 812 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size()); |
| 803 for (unsigned i = 0; i < scriptResults.size(); i++) | 813 for (unsigned i = 0; i < scriptResults.size(); i++) |
| 804 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR
esults[i]); | 814 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR
esults[i]); |
| 805 results->swap(v8Results); | 815 results->swap(v8Results); |
| 806 } else { | 816 } else { |
| 807 v8::HandleScope handleScope(toIsolate(frame())); | 817 v8::HandleScope handleScope(toIsolate(frame())); |
| 808 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi
onGroup, 0); | 818 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi
onGroup, 0); |
| 809 } | 819 } |
| 810 } | 820 } |
| 811 | 821 |
| 822 void WebLocalFrameImpl::asyncExecuteScriptInIsolatedWorld(int worldID, const Web
ScriptSource* sourcesIn, unsigned numSources, int extensionGroup, WebScriptCallb
ack* callback) |
| 823 { |
| 824 ASSERT(frame()); |
| 825 RELEASE_ASSERT(worldID > 0); |
| 826 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); |
| 827 |
| 828 Vector<ScriptSourceCode> sources = createSourcesVector(sourcesIn, numSources
); |
| 829 SuspendableScriptRunner* runner = new SuspendableScriptRunner(frame(), world
ID, sources, extensionGroup, callback); |
| 830 runner->run(); |
| 831 } |
| 832 |
| 812 v8::Handle<v8::Value> WebLocalFrameImpl::callFunctionEvenIfScriptDisabled(v8::Ha
ndle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handl
e<v8::Value> argv[]) | 833 v8::Handle<v8::Value> WebLocalFrameImpl::callFunctionEvenIfScriptDisabled(v8::Ha
ndle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handl
e<v8::Value> argv[]) |
| 813 { | 834 { |
| 814 ASSERT(frame()); | 835 ASSERT(frame()); |
| 815 return frame()->script().callFunction(function, receiver, argc, argv); | 836 return frame()->script().callFunction(function, receiver, argc, argv); |
| 816 } | 837 } |
| 817 | 838 |
| 818 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const | 839 v8::Local<v8::Context> WebLocalFrameImpl::mainWorldScriptContext() const |
| 819 { | 840 { |
| 820 return toV8Context(frame(), DOMWrapperWorld::mainWorld()); | 841 return toV8Context(frame(), DOMWrapperWorld::mainWorld()); |
| 821 } | 842 } |
| (...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1929 | 1950 |
| 1930 void WebLocalFrameImpl::invalidateAll() const | 1951 void WebLocalFrameImpl::invalidateAll() const |
| 1931 { | 1952 { |
| 1932 ASSERT(frame() && frame()->view()); | 1953 ASSERT(frame() && frame()->view()); |
| 1933 FrameView* view = frame()->view(); | 1954 FrameView* view = frame()->view(); |
| 1934 view->invalidateRect(view->frameRect()); | 1955 view->invalidateRect(view->frameRect()); |
| 1935 invalidateScrollbar(); | 1956 invalidateScrollbar(); |
| 1936 } | 1957 } |
| 1937 | 1958 |
| 1938 } // namespace blink | 1959 } // namespace blink |
| OLD | NEW |