Skip to content
  • jsbell@chromium.org's avatar
    IndexedDB: ASSERT hit calling open from callback in Worker · 334cfc03
    jsbell@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=90832
    
    Reviewed by Kentaro Hara.
    
    Source/WebCore:
    
    GroupSettings are used to provide the backing store path in some
    ports. Accessing those settings from a Worker was added, but the
    access referenced thread startup data that is cleared before the
    run loop, so an IDBFactory.open() call executed asynchronously
    would dereference a null pointer. Plumb the settings startup
    data into the context itself, like all of the other properties.
    
    Test: storage/indexeddb/open-twice-workers.html
    
    * Modules/indexeddb/IDBFactory.cpp:
    (WebCore::IDBFactory::open):
    * workers/DedicatedWorkerContext.cpp:
    (WebCore::DedicatedWorkerContext::DedicatedWorkerContext):
    * workers/DedicatedWorkerContext.h:
    (WebCore::DedicatedWorkerContext::create):
    (DedicatedWorkerContext):
    * workers/DedicatedWorkerThread.cpp:
    (WebCore::DedicatedWorkerThread::createWorkerContext):
    * workers/DedicatedWorkerThread.h:
    (DedicatedWorkerThread):
    * workers/SharedWorkerContext.cpp:
    (WebCore::SharedWorkerContext::SharedWorkerContext):
    * workers/SharedWorkerContext.h:
    (WebCore::SharedWorkerContext::create):
    (SharedWorkerContext):
    * workers/SharedWorkerThread.cpp:
    (WebCore::SharedWorkerThread::createWorkerContext):
    * workers/SharedWorkerThread.h:
    (SharedWorkerThread):
    * workers/WorkerContext.cpp:
    (WebCore::WorkerContext::WorkerContext):
    * workers/WorkerContext.h:
    (WebCore::WorkerContext::groupSettings):
    (WorkerContext):
    * workers/WorkerThread.cpp:
    (WebCore::WorkerThread::workerThread):
    * workers/WorkerThread.h:
    (WorkerThread):
    
    LayoutTests:
    
    Call IDBFactory.open() twice from a worker - once from the initial worker
    script evaluation, and once in a callback after the worker thread data
    has been purged.
    
    * storage/indexeddb/open-twice-workers-expected.txt: Added.
    * storage/indexeddb/open-twice-workers.html: Added.
    * storage/indexeddb/resources/open-twice.js: Added.
    (test):
    (openAnother):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@122463 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    334cfc03