Changeset 70195 in webkit


Ignore:
Timestamp:
Oct 20, 2010 5:25:37 PM (13 years ago)
Author:
dumi@chromium.org
Message:

WebCore: Add SecurityOrigin::threadsafeCopy() to the list of exported symbols.
https://bugs.webkit.org/show_bug.cgi?id=40655

Reviewed by David Levin.

  • WebCore.exp.in:

WebKit/mac: Repost the DatabaseTracker notifications to the main thread, if needed.
https://bugs.webkit.org/show_bug.cgi?id=40655

Reviewed by David Levin.

  • Storage/WebDatabaseTrackerClient.mm:

(DidModifyOriginData::dispatchToMainThread):
(DidModifyOriginData::DidModifyOriginData):
(DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
(WebDatabaseTrackerClient::dispatchDidModifyOrigin):
(WebDatabaseTrackerClient::dispatchDidModifyDatabase):

WebKit/win: Repost the DatabaseTracker notifications to the main thread, if needed.
https://bugs.webkit.org/show_bug.cgi?id=40655

Reviewed by David Levin.

  • WebDatabaseManager.cpp:

(DidModifyOriginData::dispatchToMainThread):
(DidModifyOriginData::DidModifyOriginData):
(DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
(WebDatabaseManager::dispatchDidModifyOrigin):
(WebDatabaseManager::dispatchDidModifyDatabase):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r70181 r70195  
     12010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
     2
     3        Reviewed by David Levin.
     4
     5        Add SecurityOrigin::threadsafeCopy() to the list of exported symbols.
     6        https://bugs.webkit.org/show_bug.cgi?id=40655
     7
     8        * WebCore.exp.in:
     9
    1102010-10-20  Sheriff Bot  <webkit.review.bot@gmail.com>
    211
  • trunk/WebCore/WebCore.exp.in

    r70095 r70195  
    319319__ZN7WebCore14SchemeRegistry25registerURLSchemeAsSecureERKN3WTF6StringE
    320320__ZN7WebCore14SchemeRegistry32registerURLSchemeAsEmptyDocumentERKN3WTF6StringE
     321__ZN7WebCore14SecurityOrigin14threadsafeCopyEv
    321322__ZN7WebCore14SecurityOrigin16createFromStringERKN3WTF6StringE
    322323__ZN7WebCore14SecurityOrigin18setLocalLoadPolicyENS0_15LocalLoadPolicyE
  • trunk/WebKit/mac/ChangeLog

    r70166 r70195  
     12010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
     2
     3        Reviewed by David Levin.
     4
     5        Repost the DatabaseTracker notifications to the main thread, if needed.
     6        https://bugs.webkit.org/show_bug.cgi?id=40655
     7
     8        * Storage/WebDatabaseTrackerClient.mm:
     9        (DidModifyOriginData::dispatchToMainThread):
     10        (DidModifyOriginData::DidModifyOriginData):
     11        (DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
     12        (WebDatabaseTrackerClient::dispatchDidModifyOrigin):
     13        (WebDatabaseTrackerClient::dispatchDidModifyDatabase):
     14
    1152010-10-20  Simon Fraser  <simon.fraser@apple.com>
    216
  • trunk/WebKit/mac/Storage/WebDatabaseTrackerClient.mm

    r43283 r70195  
    3333#import "WebDatabaseManagerPrivate.h"
    3434#import "WebSecurityOriginInternal.h"
     35#import <wtf/MainThread.h>
    3536#import <wtf/RetainPtr.h>
    3637#import <WebCore/SecurityOrigin.h>
     
    5152{
    5253}
    53    
     54
     55class DidModifyOriginData : public Noncopyable {
     56public:
     57    static void dispatchToMainThread(WebDatabaseTrackerClient* client, SecurityOrigin* origin)
     58    {
     59        DidModifyOriginData* context = new DidModifyOriginData(client, origin->threadsafeCopy());
     60        callOnMainThread(&DidModifyOriginData::dispatchDidModifyOriginOnMainThread, context);
     61    }
     62
     63private:
     64    DidModifyOriginData(WebDatabaseTrackerClient* client, PassRefPtr<SecurityOrigin> origin)
     65        : client(client)
     66        , origin(origin)
     67    {
     68    }
     69
     70    static void dispatchDidModifyOriginOnMainThread(void* context)
     71    {
     72        ASSERT(isMainThread());
     73        DidModifyOriginData* info = static_cast<DidModifyOriginData*>(context);
     74        info->client->dispatchDidModifyOrigin(info->origin.get());
     75        delete info;
     76    }
     77
     78    WebDatabaseTrackerClient* client;
     79    RefPtr<SecurityOrigin> origin;
     80};
     81
    5482void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
    5583{
    56      RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
     84    if (!isMainThread()) {
     85        DidModifyOriginData::dispatchToMainThread(this, origin);
     86        return;
     87    }
     88
     89    RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
    5790
    5891    [[NSNotificationCenter defaultCenter] postNotificationName:WebDatabaseDidModifyOriginNotification
     
    6295void WebDatabaseTrackerClient::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseIdentifier)
    6396{
     97    if (!isMainThread()) {
     98        DidModifyOriginData::dispatchToMainThread(this, origin);
     99        return;
     100    }
     101
    64102    RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
    65103    RetainPtr<NSDictionary> userInfo(AdoptNS, [[NSDictionary alloc]
  • trunk/WebKit/win/ChangeLog

    r70143 r70195  
     12010-10-20  Dumitru Daniliuc  <dumi@chromium.org>
     2
     3        Reviewed by David Levin.
     4
     5        Repost the DatabaseTracker notifications to the main thread, if needed.
     6        https://bugs.webkit.org/show_bug.cgi?id=40655
     7
     8        * WebDatabaseManager.cpp:
     9        (DidModifyOriginData::dispatchToMainThread):
     10        (DidModifyOriginData::DidModifyOriginData):
     11        (DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
     12        (WebDatabaseManager::dispatchDidModifyOrigin):
     13        (WebDatabaseManager::dispatchDidModifyDatabase):
     14
    1152010-10-20  Dirk Schulze  <krit@webkit.org>
    216
  • trunk/WebKit/win/WebDatabaseManager.cpp

    r65021 r70195  
    3939#include "WebSecurityOrigin.h"
    4040
     41#include <JavaScriptCore/MainThread.h>
    4142#include <WebCore/BString.h>
    4243#include <WebCore/COMPtr.h>
     
    328329}
    329330
     331class DidModifyOriginData : public Noncopyable {
     332public:
     333    static void dispatchToMainThread(WebDatabaseManager* databaseManager, SecurityOrigin* origin)
     334    {
     335        DidModifyOriginData* context = new DidModifyOriginData(databaseManager, origin->threadsafeCopy());
     336        callOnMainThread(&DidModifyOriginData::dispatchDidModifyOriginOnMainThread, context);
     337    }
     338
     339private:
     340    DidModifyOriginData(WebDatabaseManager* databaseManager, PassRefPtr<SecurityOrigin> origin)
     341        : databaseManager(databaseManager)
     342        , origin(origin)
     343    {
     344    }
     345
     346    static void dispatchDidModifyOriginOnMainThread(void* context)
     347    {
     348        ASSERT(isMainThread());
     349        DidModifyOriginData* info = static_cast<DidModifyOriginData*>(context);
     350        info->databaseManager->dispatchDidModifyOrigin(info->origin.get());
     351        delete info;
     352    }
     353
     354    WebDatabaseManager* databaseManager;
     355    RefPtr<SecurityOrigin> origin;
     356};
     357
    330358void WebDatabaseManager::dispatchDidModifyOrigin(SecurityOrigin* origin)
    331359{
     360    if (!isMainThread()) {
     361        DidModifyOriginData::dispatchToMainThread(this, origin);
     362        return;
     363    }
     364
    332365    static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyOriginNotification);
    333366    IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
     
    354387void WebDatabaseManager::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseName)
    355388{
     389    if (!isMainThread()) {
     390        DidModifyOriginData::dispatchToMainThread(this, origin);
     391        return;
     392    }
     393
    356394    static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyDatabaseNotification);
    357395    IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
Note: See TracChangeset for help on using the changeset viewer.