Changeset 56374 in webkit


Ignore:
Timestamp:
Mar 22, 2010 7:11:03 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-03-22 Andrey Kosyakov <caseq@chromium.org>

Reviewed by Pavel Feldman.

Support creation of fake workers before document is loaded by deferring
attaching of fake workers iframe until document is loaded and buffering all
messages addressed to worker.
https://bugs.webkit.org/show_bug.cgi?id=36445

  • inspector/front-end/InjectedFakeWorker.js: (InjectedFakeWorker.FakeWorker.prototype.postMessage): (InjectedFakeWorker.FakeWorker.prototype._buildWorker): (InjectedFakeWorker.FakeWorker.prototype._attachWorkerFrameToDocument): (InjectedFakeWorker.FakeWorker.prototype._onWorkerFrameLoaded):
Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r56365 r56374  
     12010-03-22  Andrey Kosyakov  <caseq@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5
     6        Support creation of fake workers before document is loaded by deferring
     7        attaching of fake workers iframe until document is loaded and buffering all
     8        messages addressed to worker.
     9        https://bugs.webkit.org/show_bug.cgi?id=36445
     10
     11        * inspector/front-end/InjectedFakeWorker.js:
     12        (InjectedFakeWorker.FakeWorker.prototype.postMessage):
     13        (InjectedFakeWorker.FakeWorker.prototype._buildWorker):
     14        (InjectedFakeWorker.FakeWorker.prototype._attachWorkerFrameToDocument):
     15        (InjectedFakeWorker.FakeWorker.prototype._onWorkerFrameLoaded):
     16
    1172010-03-22  Darin Fisher  <darin@chromium.org>
    218
  • trunk/WebCore/inspector/front-end/InjectedFakeWorker.js

    r55771 r56374  
    6060        if (this._frame != null)
    6161            this._dispatchMessage(this._frame, bind(this._onmessageWrapper, this), msg);
     62        else if (this._pendingMessages)
     63            this._pendingMessages.push(msg)
     64        else
     65            this._pendingMessages = [ msg ];
    6266    },
    6367
     
    117121        var iframeElement = document.createElement("iframe");
    118122        iframeElement.style.display = "none";
     123
     124        this._document = document;
     125        iframeElement.onload = bind(this._onWorkerFrameLoaded, this, iframeElement, url, code);
     126
     127        if (document.body)
     128            this._attachWorkerFrameToDocument(iframeElement, url, code);
     129        else
     130            window.addEventListener("load", bind(this._attachWorkerFrameToDocument, this, iframeElement), false);
     131    },
     132
     133    _attachWorkerFrameToDocument: function(iframeElement)
     134    {
    119135        document.body.appendChild(iframeElement);
    120 
    121         var frame = window.frames[window.frames.length - 1];
    122 
    123         this._document = document;
     136    },
     137
     138    _onWorkerFrameLoaded: function(iframeElement, url, code)
     139    {
     140        var frame = iframeElement.contentWindow;
    124141        this._frame = frame;
    125 
    126142        this._setupWorkerContext(frame, url);
    127143
     
    129145
    130146        frame.eval(frameContents);
     147        if (this._pendingMessages) {
     148            for (var msg in this._pendingMessages)
     149                this.postMessage(this._pendingMessages[msg]);
     150            delete this._pendingMessages;
     151        }
    131152    },
    132153
Note: See TracChangeset for help on using the changeset viewer.