Changeset 51374 in webkit


Ignore:
Timestamp:
Nov 24, 2009 10:01:46 PM (14 years ago)
Author:
dimich@chromium.org
Message:

Initial implementation of WebKitSharedScript and SharedScriptContext
https://bugs.webkit.org/show_bug.cgi?id=31569

Reviewed by David Levin.

No new tests since there are no bindings yet (soon to come).

  • DerivedSources.make: Add WebKitSharedScript and SharedScriptContext to a list of idl files.
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::detach): Notify WebKitSharedScriptRepository that document is detaching.

  • dom/EventTarget.cpp: Add new casting methods, since the new types are EventTargets.

(WebCore::EventTarget::toWebKitSharedScript):
(WebCore::EventTarget::toSharedScriptContext):

  • dom/EventTarget.h: Ditto
  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::isSharedScriptContext): New virtual method, since there is a new type of context.

  • SharedScript/SharedScriptContext.cpp: Added. Similar to WorkerContext, but w/o threading.

(WebCore::SharedScriptContext::SharedScriptContext):
(WebCore::SharedScriptContext::~SharedScriptContext):
(WebCore::SharedScriptContext::clearScript):
(WebCore::SharedScriptContext::virtualURL):
(WebCore::SharedScriptContext::virtualCompleteURL):
(WebCore::SharedScriptContext::reportException):
(WebCore::SharedScriptContext::addMessage):
(WebCore::SharedScriptContext::resourceRetrievedByXMLHttpRequest):
(WebCore::SharedScriptContext::scriptImported):
(WebCore::SharedScriptContext::matches):
(WebCore::SharedScriptContext::addToDocumentsList):
(WebCore::SharedScriptContext::destructionTimerFired):
(WebCore::SharedScriptContext::removeFromDocumentList):
(WebCore::SharedScriptContext::load):
(WebCore::SharedScriptContext::postTask):
(WebCore::SharedScriptContext::eventTargetData):
(WebCore::SharedScriptContext::ensureEventTargetData):
(WebCore::SharedScriptContext::scriptExecutionContext):

  • SharedScript/SharedScriptContext.h: Added.

(WebCore::SharedScriptContext::create):
(WebCore::SharedScriptContext::isSharedScriptContext):
(WebCore::SharedScriptContext::userAgent):
(WebCore::SharedScriptContext::toSharedScriptContext):
(WebCore::SharedScriptContext::self):
(WebCore::SharedScriptContext::script):
(WebCore::SharedScriptContext::loaded):
(WebCore::SharedScriptContext::name):
(WebCore::SharedScriptContext::refEventTarget):
(WebCore::SharedScriptContext::derefEventTarget):
(WebCore::SharedScriptContext::refScriptExecutionContext):
(WebCore::SharedScriptContext::derefScriptExecutionContext):

  • SharedScript/SharedScriptContext.idl: Added.
  • SharedScript/SharedScriptController.h:

Added. Empty implementation of a ScriptController, will come later as part of bindings. Needed to compile.

  • SharedScript/WebKitSharedScript.cpp: Added. EventTarget-based DOM object.

(WebCore::WebKitSharedScript::WebKitSharedScript):
(WebCore::WebKitSharedScript::~WebKitSharedScript):
(WebCore::WebKitSharedScript::setContext):
(WebCore::LoadEventTask::create): Fires asynchronous 'load' event when underlying SharedScriptContext is initialized.
(WebCore::LoadEventTask::performTask):
(WebCore::LoadEventTask::LoadEventTask):
(WebCore::WebKitSharedScript::scheduleLoadEvent):

  • SharedScript/WebKitSharedScript.h: Added.

(WebCore::WebKitSharedScript::create):
(WebCore::WebKitSharedScript::scriptExecutionContext):
(WebCore::WebKitSharedScript::toWebKitSharedScript):
(WebCore::WebKitSharedScript::context):
(WebCore::WebKitSharedScript::refEventTarget):
(WebCore::WebKitSharedScript::derefEventTarget):
(WebCore::WebKitSharedScript::eventTargetData):
(WebCore::WebKitSharedScript::ensureEventTargetData):

  • SharedScript/WebKitSharedScript.idl: Added.
  • SharedScript/WebKitSharedScriptRepository.cpp: Added. Implements a list of running SharedScriptContexts.

(WebCore::ScriptLoader::ScriptLoader): The helper class to load an initial script of SharedScriptContext.
(WebCore::ScriptLoader::load):
(WebCore::ScriptLoader::notifyFinished):
(WebCore::WebKitSharedScriptRepository::instance): Repository has a static global instance.
(WebCore::WebKitSharedScriptRepository::connect):
(WebCore::WebKitSharedScriptRepository::documentDetached): Called from Document::detach().
(WebCore::WebKitSharedScriptRepository::removeSharedScriptContext): Called from ~SharedScriptContext().
(WebCore::WebKitSharedScriptRepository::connectToSharedScript):
(WebCore::WebKitSharedScriptRepository::getSharedScriptContext):

  • SharedScript/WebKitSharedScriptRepository.h: Added.

(WebCore::WebKitSharedScriptRepository::WebKitSharedScriptRepository):

Location:
trunk/WebCore
Files:
10 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r51373 r51374  
     12009-11-24  Dmitry Titov  <dimich@chromium.org>
     2
     3        Reviewed by David Levin.
     4
     5        Initial implementation of WebKitSharedScript and SharedScriptContext
     6        https://bugs.webkit.org/show_bug.cgi?id=31569
     7
     8        No new tests since there are no bindings yet (soon to come).
     9
     10        * DerivedSources.make: Add WebKitSharedScript and SharedScriptContext to a list of idl files.
     11        * WebCore.xcodeproj/project.pbxproj:
     12        * dom/Document.cpp:
     13        (WebCore::Document::detach): Notify WebKitSharedScriptRepository that document is detaching.
     14        * dom/EventTarget.cpp: Add new casting methods, since the new types are EventTargets.
     15        (WebCore::EventTarget::toWebKitSharedScript):
     16        (WebCore::EventTarget::toSharedScriptContext):
     17        * dom/EventTarget.h: Ditto
     18        * dom/ScriptExecutionContext.h:
     19        (WebCore::ScriptExecutionContext::isSharedScriptContext): New virtual method, since there is a new type of context.
     20
     21        * SharedScript/SharedScriptContext.cpp: Added. Similar to WorkerContext, but w/o threading.
     22        (WebCore::SharedScriptContext::SharedScriptContext):
     23        (WebCore::SharedScriptContext::~SharedScriptContext):
     24        (WebCore::SharedScriptContext::clearScript):
     25        (WebCore::SharedScriptContext::virtualURL):
     26        (WebCore::SharedScriptContext::virtualCompleteURL):
     27        (WebCore::SharedScriptContext::reportException):
     28        (WebCore::SharedScriptContext::addMessage):
     29        (WebCore::SharedScriptContext::resourceRetrievedByXMLHttpRequest):
     30        (WebCore::SharedScriptContext::scriptImported):
     31        (WebCore::SharedScriptContext::matches):
     32        (WebCore::SharedScriptContext::addToDocumentsList):
     33        (WebCore::SharedScriptContext::destructionTimerFired):
     34        (WebCore::SharedScriptContext::removeFromDocumentList):
     35        (WebCore::SharedScriptContext::load):
     36        (WebCore::SharedScriptContext::postTask):
     37        (WebCore::SharedScriptContext::eventTargetData):
     38        (WebCore::SharedScriptContext::ensureEventTargetData):
     39        (WebCore::SharedScriptContext::scriptExecutionContext):
     40        * SharedScript/SharedScriptContext.h: Added.
     41        (WebCore::SharedScriptContext::create):
     42        (WebCore::SharedScriptContext::isSharedScriptContext):
     43        (WebCore::SharedScriptContext::userAgent):
     44        (WebCore::SharedScriptContext::toSharedScriptContext):
     45        (WebCore::SharedScriptContext::self):
     46        (WebCore::SharedScriptContext::script):
     47        (WebCore::SharedScriptContext::loaded):
     48        (WebCore::SharedScriptContext::name):
     49        (WebCore::SharedScriptContext::refEventTarget):
     50        (WebCore::SharedScriptContext::derefEventTarget):
     51        (WebCore::SharedScriptContext::refScriptExecutionContext):
     52        (WebCore::SharedScriptContext::derefScriptExecutionContext):
     53        * SharedScript/SharedScriptContext.idl: Added.
     54
     55        * SharedScript/SharedScriptController.h:
     56        Added. Empty implementation of a ScriptController, will come later as part of bindings. Needed to compile.
     57
     58        * SharedScript/WebKitSharedScript.cpp: Added. EventTarget-based DOM object.
     59        (WebCore::WebKitSharedScript::WebKitSharedScript):
     60        (WebCore::WebKitSharedScript::~WebKitSharedScript):
     61        (WebCore::WebKitSharedScript::setContext):
     62        (WebCore::LoadEventTask::create): Fires asynchronous 'load' event when underlying SharedScriptContext is initialized.
     63        (WebCore::LoadEventTask::performTask):
     64        (WebCore::LoadEventTask::LoadEventTask):
     65        (WebCore::WebKitSharedScript::scheduleLoadEvent):
     66        * SharedScript/WebKitSharedScript.h: Added.
     67        (WebCore::WebKitSharedScript::create):
     68        (WebCore::WebKitSharedScript::scriptExecutionContext):
     69        (WebCore::WebKitSharedScript::toWebKitSharedScript):
     70        (WebCore::WebKitSharedScript::context):
     71        (WebCore::WebKitSharedScript::refEventTarget):
     72        (WebCore::WebKitSharedScript::derefEventTarget):
     73        (WebCore::WebKitSharedScript::eventTargetData):
     74        (WebCore::WebKitSharedScript::ensureEventTargetData):
     75        * SharedScript/WebKitSharedScript.idl: Added.
     76
     77        * SharedScript/WebKitSharedScriptRepository.cpp: Added. Implements a list of running SharedScriptContexts.
     78        (WebCore::ScriptLoader::ScriptLoader): The helper class to load an initial script of SharedScriptContext.
     79        (WebCore::ScriptLoader::load):
     80        (WebCore::ScriptLoader::notifyFinished):
     81        (WebCore::WebKitSharedScriptRepository::instance): Repository has a static global instance.
     82        (WebCore::WebKitSharedScriptRepository::connect):
     83        (WebCore::WebKitSharedScriptRepository::documentDetached): Called from Document::detach().
     84        (WebCore::WebKitSharedScriptRepository::removeSharedScriptContext): Called from ~SharedScriptContext().
     85        (WebCore::WebKitSharedScriptRepository::connectToSharedScript):
     86        (WebCore::WebKitSharedScriptRepository::getSharedScriptContext):
     87        * SharedScript/WebKitSharedScriptRepository.h: Added.
     88        (WebCore::WebKitSharedScriptRepository::WebKitSharedScriptRepository):
     89
    1902009-11-24  Dmitry Titov  <dimich@chromium.org>
    291
  • trunk/WebCore/DerivedSources.make

    r50968 r51374  
    4040    $(WebCore)/page \
    4141    $(WebCore)/plugins \
     42    $(WebCore)/SharedScript \
    4243    $(WebCore)/storage \
    4344    $(WebCore)/xml \
     
    233234    RangeException \
    234235    Rect \
     236    SharedScriptContext \
    235237    SharedWorker \
    236238    SharedWorkerContext \
     
    401403    WebKitCSSMatrix \
    402404    WebKitCSSTransformValue \
     405    WebKitSharedScript \
    403406    WebKitPoint \
    404407    WebKitTransitionEvent \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r51371 r51374  
    4192541925                </Filter>
    4192641926                <Filter
     41927                        Name="SharedScript"
     41928                        >
     41929                        <File
     41930                                RelativePath="..\SharedScript\SharedScriptContext.cpp"
     41931                                >
     41932                        </File>
     41933                        <File
     41934                                RelativePath="..\SharedScript\SharedScriptContext.h"
     41935                                >
     41936                        </File>
     41937                        <File
     41938                                RelativePath="..\SharedScript\SharedScriptController.h"
     41939                                >
     41940                        </File>
     41941                        <File
     41942                                RelativePath="..\SharedScript\WebKitSharedScript.cpp"
     41943                                >
     41944                        </File>
     41945                        <File
     41946                                RelativePath="..\SharedScript\WebKitSharedScript.h"
     41947                                >
     41948                        </File>
     41949                        <File
     41950                                RelativePath="..\SharedScript\WebKitSharedScriptRepository.cpp"
     41951                                >
     41952                        </File>
     41953                        <File
     41954                                RelativePath="..\SharedScript\WebKitSharedScriptRepository.h"
     41955                                >
     41956                        </File>
     41957                </Filter>
     41958                <Filter
    4192741959                        Name="storage"
    4192841960                        >
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r51354 r51374  
    243243                188604B30F2E654A000B6443 /* DOMTimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 188604B10F2E654A000B6443 /* DOMTimer.cpp */; };
    244244                188604B40F2E654A000B6443 /* DOMTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 188604B20F2E654A000B6443 /* DOMTimer.h */; };
     245                18C5FCA510A3991F0048438D /* WebKitSharedScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18C5FCA010A3991F0048438D /* WebKitSharedScript.cpp */; };
     246                18C5FCA610A3991F0048438D /* WebKitSharedScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C5FCA110A3991F0048438D /* WebKitSharedScript.h */; };
     247                18C5FCA710A3991F0048438D /* WebKitSharedScript.idl in Resources */ = {isa = PBXBuildFile; fileRef = 18C5FCA210A3991F0048438D /* WebKitSharedScript.idl */; };
     248                18C5FCA810A3991F0048438D /* WebKitSharedScriptRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18C5FCA310A3991F0048438D /* WebKitSharedScriptRepository.cpp */; };
     249                18C5FCA910A3991F0048438D /* WebKitSharedScriptRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C5FCA410A3991F0048438D /* WebKitSharedScriptRepository.h */; };
     250                18C5FCB710A3C6F20048438D /* SharedScriptContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18C5FCB410A3C6F20048438D /* SharedScriptContext.cpp */; };
     251                18C5FCB810A3C6F20048438D /* SharedScriptContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 18C5FCB510A3C6F20048438D /* SharedScriptContext.h */; };
     252                18C5FCB910A3C6F20048438D /* SharedScriptContext.idl in Resources */ = {isa = PBXBuildFile; fileRef = 18C5FCB610A3C6F20048438D /* SharedScriptContext.idl */; };
    245253                18F831B80FD48C7800D8C56B /* WorkerLoaderProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */; };
    246254                1A0D57360A5C77FE007EDD4C /* OverflowEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0D57340A5C77FE007EDD4C /* OverflowEvent.cpp */; };
     
    54335441                188604B10F2E654A000B6443 /* DOMTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMTimer.cpp; sourceTree = "<group>"; };
    54345442                188604B20F2E654A000B6443 /* DOMTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMTimer.h; sourceTree = "<group>"; };
     5443                18C5FCA010A3991F0048438D /* WebKitSharedScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitSharedScript.cpp; sourceTree = "<group>"; };
     5444                18C5FCA110A3991F0048438D /* WebKitSharedScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitSharedScript.h; sourceTree = "<group>"; };
     5445                18C5FCA210A3991F0048438D /* WebKitSharedScript.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitSharedScript.idl; sourceTree = "<group>"; };
     5446                18C5FCA310A3991F0048438D /* WebKitSharedScriptRepository.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitSharedScriptRepository.cpp; sourceTree = "<group>"; };
     5447                18C5FCA410A3991F0048438D /* WebKitSharedScriptRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitSharedScriptRepository.h; sourceTree = "<group>"; };
     5448                18C5FCB410A3C6F20048438D /* SharedScriptContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedScriptContext.cpp; sourceTree = "<group>"; };
     5449                18C5FCB510A3C6F20048438D /* SharedScriptContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedScriptContext.h; sourceTree = "<group>"; };
     5450                18C5FCB610A3C6F20048438D /* SharedScriptContext.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SharedScriptContext.idl; sourceTree = "<group>"; };
    54355451                18F831B70FD48C7800D8C56B /* WorkerLoaderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WorkerLoaderProxy.h; path = workers/WorkerLoaderProxy.h; sourceTree = "<group>"; };
    54365452                1A0D57340A5C77FE007EDD4C /* OverflowEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = OverflowEvent.cpp; sourceTree = "<group>"; };
     
    1006310079                                5DCF83690D59157800953BC6 /* plugins */,
    1006410080                                F523D2F302DE443B018635CA /* rendering */,
     10081                                18C5FC9F10A3991F0048438D /* SharedScript */,
    1006510082                                1AE82EC90CAAE177002237AE /* storage */,
    1006610083                                B22277CA0D00BF1E0071B782 /* svg */,
     
    1016310180                        path = DerivedSources/WebCore;
    1016410181                        sourceTree = BUILT_PRODUCTS_DIR;
     10182                };
     10183                18C5FC9F10A3991F0048438D /* SharedScript */ = {
     10184                        isa = PBXGroup;
     10185                        children = (
     10186                                18C5FCB410A3C6F20048438D /* SharedScriptContext.cpp */,
     10187                                18C5FCB510A3C6F20048438D /* SharedScriptContext.h */,
     10188                                18C5FCB610A3C6F20048438D /* SharedScriptContext.idl */,
     10189                                18C5FCA010A3991F0048438D /* WebKitSharedScript.cpp */,
     10190                                18C5FCA110A3991F0048438D /* WebKitSharedScript.h */,
     10191                                18C5FCA210A3991F0048438D /* WebKitSharedScript.idl */,
     10192                                18C5FCA310A3991F0048438D /* WebKitSharedScriptRepository.cpp */,
     10193                                18C5FCA410A3991F0048438D /* WebKitSharedScriptRepository.h */,
     10194                        );
     10195                        path = "SharedScript";
     10196                        sourceTree = "<group>";
    1016510197                };
    1016610198                1A2E6E560CC551E0004A2062 /* sql */ = {
     
    1814118173                                1479FAF2109AE37500DED655 /* RenderRubyRun.h in Headers */,
    1814218174                                1479FAF4109AE37500DED655 /* RenderRubyText.h in Headers */,
     18175                                18C5FCA610A3991F0048438D /* WebKitSharedScript.h in Headers */,
     18176                                18C5FCA910A3991F0048438D /* WebKitSharedScriptRepository.h in Headers */,
     18177                                18C5FCB810A3C6F20048438D /* SharedScriptContext.h in Headers */,
    1814318178                                E124748410AA161D00B79493 /* AuthenticationClient.h in Headers */,
    1814418179                                9382DF5810A8D5C900925652 /* ColorSpace.h in Headers */,
     
    1824618281                                1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
    1824718282                                1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
     18283                                18C5FCA710A3991F0048438D /* WebKitSharedScript.idl in Resources */,
     18284                                18C5FCB910A3C6F20048438D /* SharedScriptContext.idl in Resources */,
    1824818285                        );
    1824918286                        runOnlyForDeploymentPostprocessing = 0;
     
    2028820325                                1479FAF1109AE37500DED655 /* RenderRubyRun.cpp in Sources */,
    2028920326                                1479FAF3109AE37500DED655 /* RenderRubyText.cpp in Sources */,
     20327                                18C5FCA510A3991F0048438D /* WebKitSharedScript.cpp in Sources */,
     20328                                18C5FCA810A3991F0048438D /* WebKitSharedScriptRepository.cpp in Sources */,
     20329                                18C5FCB710A3C6F20048438D /* SharedScriptContext.cpp in Sources */,
    2029020330                                E1B4CD2510B322E200BFFD7E /* CredentialStorageMac.mm in Sources */,
    2029120331                                6E47E66010B7944B00B186C8 /* WebGLGetInfo.cpp in Sources */,
  • trunk/WebCore/dom/Document.cpp

    r51324 r51374  
    144144#endif
    145145
     146#if ENABLE(SHARED_SCRIPT)
     147#include "WebKitSharedScriptRepository.h"
     148#endif
     149
    146150#if ENABLE(DOM_STORAGE)
    147151#include "StorageEvent.h"
     
    14411445#if ENABLE(SHARED_WORKERS)
    14421446    SharedWorkerRepository::documentDetached(this);
     1447#endif
     1448
     1449#if ENABLE(SHARED_SCRIPT)
     1450    WebKitSharedScriptRepository::documentDetached(this);
    14431451#endif
    14441452
  • trunk/WebCore/dom/EventTarget.cpp

    r50583 r51374  
    157157#endif
    158158
     159#if ENABLE(SHARED_SCRIPT)
     160WebKitSharedScript* EventTarget::toWebKitSharedScript()
     161{
     162    return 0;
     163}
     164
     165SharedScriptContext* EventTarget::toSharedScriptContext()
     166{
     167    return 0;
     168}
     169#endif
     170
    159171bool EventTarget::addEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener, bool useCapture)
    160172{
  • trunk/WebCore/dom/EventTarget.h

    r50573 r51374  
    6060    class XMLHttpRequestUpload;
    6161
     62#if ENABLE(SHARED_SCRIPT)
     63    class SharedScriptContext;
     64    class WebKitSharedScript;
     65#endif
     66
    6267    typedef int ExceptionCode;
    6368
     
    119124#endif
    120125
     126#if ENABLE(SHARED_SCRIPT)
     127        virtual WebKitSharedScript* toWebKitSharedScript();
     128        virtual SharedScriptContext* toSharedScriptContext();
     129#endif
     130
    121131        virtual ScriptExecutionContext* scriptExecutionContext() const = 0;
    122132
  • trunk/WebCore/dom/ScriptExecutionContext.h

    r51127 r51374  
    5858        virtual bool isDocument() const { return false; }
    5959        virtual bool isWorkerContext() const { return false; }
     60#if ENABLE(SHARED_SCRIPT)
     61        virtual bool isSharedScriptContext() const { return false; }
     62#endif
    6063
    6164        const KURL& url() const { return virtualURL(); }
Note: See TracChangeset for help on using the changeset viewer.