[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

dumi at chromium.org dumi at chromium.org
Wed Dec 22 14:48:47 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 34e67881ff05b841f6b42063eb1841fdb339e3cb
Author: dumi at chromium.org <dumi at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 21 00:25:37 2010 +0000

    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):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70195 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 82e8230..4542627 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,12 @@
+2010-10-20  Dumitru Daniliuc  <dumi at chromium.org>
+
+        Reviewed by David Levin.
+
+        Add SecurityOrigin::threadsafeCopy() to the list of exported symbols.
+        https://bugs.webkit.org/show_bug.cgi?id=40655
+
+        * WebCore.exp.in:
+
 2010-10-20  Sheriff Bot  <webkit.review.bot at gmail.com>
 
         Unreviewed, rolling out r70165.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index ac92256..6948d67 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -318,6 +318,7 @@ __ZN7WebCore14SVGSMILElement13isSMILElementEPNS_4NodeE
 __ZN7WebCore14SchemeRegistry24registerURLSchemeAsLocalERKN3WTF6StringE
 __ZN7WebCore14SchemeRegistry25registerURLSchemeAsSecureERKN3WTF6StringE
 __ZN7WebCore14SchemeRegistry32registerURLSchemeAsEmptyDocumentERKN3WTF6StringE
+__ZN7WebCore14SecurityOrigin14threadsafeCopyEv
 __ZN7WebCore14SecurityOrigin16createFromStringERKN3WTF6StringE
 __ZN7WebCore14SecurityOrigin18setLocalLoadPolicyENS0_15LocalLoadPolicyE
 __ZN7WebCore14SecurityOrigin18shouldHideReferrerERKNS_4KURLERKN3WTF6StringE
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index c931699..68eb0fd 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-20  Dumitru Daniliuc  <dumi at chromium.org>
+
+        Reviewed by David Levin.
+
+        Repost the DatabaseTracker notifications to the main thread, if needed.
+        https://bugs.webkit.org/show_bug.cgi?id=40655
+
+        * Storage/WebDatabaseTrackerClient.mm:
+        (DidModifyOriginData::dispatchToMainThread):
+        (DidModifyOriginData::DidModifyOriginData):
+        (DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
+        (WebDatabaseTrackerClient::dispatchDidModifyOrigin):
+        (WebDatabaseTrackerClient::dispatchDidModifyDatabase):
+
 2010-10-20  Simon Fraser  <simon.fraser at apple.com>
 
         Reviewed by Darin Adler.
diff --git a/WebKit/mac/Storage/WebDatabaseTrackerClient.mm b/WebKit/mac/Storage/WebDatabaseTrackerClient.mm
index 89626fb..2913739 100644
--- a/WebKit/mac/Storage/WebDatabaseTrackerClient.mm
+++ b/WebKit/mac/Storage/WebDatabaseTrackerClient.mm
@@ -32,6 +32,7 @@
 
 #import "WebDatabaseManagerPrivate.h"
 #import "WebSecurityOriginInternal.h"
+#import <wtf/MainThread.h>
 #import <wtf/RetainPtr.h>
 #import <WebCore/SecurityOrigin.h>
 
@@ -50,10 +51,42 @@ WebDatabaseTrackerClient::WebDatabaseTrackerClient()
 WebDatabaseTrackerClient::~WebDatabaseTrackerClient()
 {
 }
-    
+
+class DidModifyOriginData : public Noncopyable {
+public:
+    static void dispatchToMainThread(WebDatabaseTrackerClient* client, SecurityOrigin* origin)
+    {
+        DidModifyOriginData* context = new DidModifyOriginData(client, origin->threadsafeCopy());
+        callOnMainThread(&DidModifyOriginData::dispatchDidModifyOriginOnMainThread, context);
+    }
+
+private:
+    DidModifyOriginData(WebDatabaseTrackerClient* client, PassRefPtr<SecurityOrigin> origin)
+        : client(client)
+        , origin(origin)
+    {
+    }
+
+    static void dispatchDidModifyOriginOnMainThread(void* context)
+    {
+        ASSERT(isMainThread());
+        DidModifyOriginData* info = static_cast<DidModifyOriginData*>(context);
+        info->client->dispatchDidModifyOrigin(info->origin.get());
+        delete info;
+    }
+
+    WebDatabaseTrackerClient* client;
+    RefPtr<SecurityOrigin> origin;
+};
+
 void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
 {
-     RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
+    if (!isMainThread()) {
+        DidModifyOriginData::dispatchToMainThread(this, origin);
+        return;
+    }
+
+    RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
 
     [[NSNotificationCenter defaultCenter] postNotificationName:WebDatabaseDidModifyOriginNotification 
                                                         object:webSecurityOrigin.get()];
@@ -61,6 +94,11 @@ void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
 
 void WebDatabaseTrackerClient::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseIdentifier)
 {
+    if (!isMainThread()) {
+        DidModifyOriginData::dispatchToMainThread(this, origin);
+        return;
+    }
+
     RetainPtr<WebSecurityOrigin> webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
     RetainPtr<NSDictionary> userInfo(AdoptNS, [[NSDictionary alloc] 
                                                initWithObjectsAndKeys:(NSString *)databaseIdentifier, WebDatabaseIdentifierKey, nil]);
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index 68bc934..0f4c32c 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-20  Dumitru Daniliuc  <dumi at chromium.org>
+
+        Reviewed by David Levin.
+
+        Repost the DatabaseTracker notifications to the main thread, if needed.
+        https://bugs.webkit.org/show_bug.cgi?id=40655
+
+        * WebDatabaseManager.cpp:
+        (DidModifyOriginData::dispatchToMainThread):
+        (DidModifyOriginData::DidModifyOriginData):
+        (DidModifyOriginData::dispatchDidModifyOriginOnMainThread):
+        (WebDatabaseManager::dispatchDidModifyOrigin):
+        (WebDatabaseManager::dispatchDidModifyDatabase):
+
 2010-10-20  Dirk Schulze  <krit at webkit.org>
 
         Reviewed by Nikolas Zimmermann.
diff --git a/WebKit/win/WebDatabaseManager.cpp b/WebKit/win/WebDatabaseManager.cpp
index 4c23d6c..bdcb549 100644
--- a/WebKit/win/WebDatabaseManager.cpp
+++ b/WebKit/win/WebDatabaseManager.cpp
@@ -38,6 +38,7 @@
 #include "WebNotificationCenter.h"
 #include "WebSecurityOrigin.h"
 
+#include <JavaScriptCore/MainThread.h>
 #include <WebCore/BString.h>
 #include <WebCore/COMPtr.h>
 #include <WebCore/DatabaseTracker.h>
@@ -327,8 +328,40 @@ HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteDatabase(
     return S_OK;
 }
 
+class DidModifyOriginData : public Noncopyable {
+public:
+    static void dispatchToMainThread(WebDatabaseManager* databaseManager, SecurityOrigin* origin)
+    {
+        DidModifyOriginData* context = new DidModifyOriginData(databaseManager, origin->threadsafeCopy());
+        callOnMainThread(&DidModifyOriginData::dispatchDidModifyOriginOnMainThread, context);
+    }
+
+private:
+    DidModifyOriginData(WebDatabaseManager* databaseManager, PassRefPtr<SecurityOrigin> origin)
+        : databaseManager(databaseManager)
+        , origin(origin)
+    {
+    }
+
+    static void dispatchDidModifyOriginOnMainThread(void* context)
+    {
+        ASSERT(isMainThread());
+        DidModifyOriginData* info = static_cast<DidModifyOriginData*>(context);
+        info->databaseManager->dispatchDidModifyOrigin(info->origin.get());
+        delete info;
+    }
+
+    WebDatabaseManager* databaseManager;
+    RefPtr<SecurityOrigin> origin;
+};
+
 void WebDatabaseManager::dispatchDidModifyOrigin(SecurityOrigin* origin)
 {
+    if (!isMainThread()) {
+        DidModifyOriginData::dispatchToMainThread(this, origin);
+        return;
+    }
+
     static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyOriginNotification);
     IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
 
@@ -353,6 +386,11 @@ HRESULT STDMETHODCALLTYPE WebDatabaseManager::setQuota(
 
 void WebDatabaseManager::dispatchDidModifyDatabase(SecurityOrigin* origin, const String& databaseName)
 {
+    if (!isMainThread()) {
+        DidModifyOriginData::dispatchToMainThread(this, origin);
+        return;
+    }
+
     static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyDatabaseNotification);
     IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list