Title: [105355] branches/chromium/912
- Revision
- 105355
- Author
- tse...@chromium.org
- Date
- 2012-01-18 16:49:41 -0800 (Wed, 18 Jan 2012)
Log Message
Merge 103429 - Source/WebCore: [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread
BUG=107873
Review URL: https://chromiumcodereview.appspot.com/9254017
Modified Paths
Diff
Modified: branches/chromium/912/LayoutTests/platform/chromium/test_expectations.txt (105354 => 105355)
--- branches/chromium/912/LayoutTests/platform/chromium/test_expectations.txt 2012-01-19 00:42:00 UTC (rev 105354)
+++ branches/chromium/912/LayoutTests/platform/chromium/test_expectations.txt 2012-01-19 00:49:41 UTC (rev 105355)
@@ -162,6 +162,29 @@
WONTFIX SKIP : http/tests/inspector/network/network-shared-worker.html = PASS TIMEOUT FAIL
WONTFIX SKIP : http/tests/inspector/network/network-worker.html = PASS TIMEOUT FAIL
+// test_shell does not support message ports
+BUGWK74459 SKIP : fast/workers/termination-with-port-messages.html = CRASH
+BUGWK74459 SKIP : fast/workers/worker-cloneport.html = CRASH
+BUGWK74459 SKIP : fast/workers/worker-context-multi-port.html = CRASH
+BUGWK74459 SKIP : fast/workers/worker-messageport-gc.html = CRASH
+BUGWK74459 SKIP : fast/workers/worker-messageport.html = CRASH
+BUGWK74459 SKIP : fast/workers/worker-multi-port.html = CRASH
+
+BUGWK74449 SKIP : fast/workers/dedicated-worker-lifecycle.html = TIMEOUT
+BUGWK74449 SKIP : fast/workers/worker-close-more.html = TIMEOUT
+BUGWK74449 SKIP : fast/workers/worker-lifecycle.html = TIMEOUT
+
+BUGWK74466 : fast/workers/worker-script-error.html = PASS TIMEOUT FAIL
+
+// Tests timing out because layoutTestController.workerThreadCount is not implemented in DRT
+BUGWK74653 SKIP : http/tests/xmlhttprequest/workers/abort-exception-assert.html = TIMEOUT
+BUGWK74653 SKIP : http/tests/workers/interrupt-database-sync-open-crash.html = TIMEOUT
+BUGWK74653 SKIP : fast/workers/storage/interrupt-database.html = TIMEOUT
+
+BUGWK71968 : fast/files/workers/worker-apply-blob-url-to-xhr.html = TEXT
+
+BUGWK74654 SKIP : http/tests/inspector/network/network-worker.html = PASS TIMEOUT FAIL
+
// Page Cache - based tests. Chromium disables page cache because the WebKit page cache keeps previously
// loaded pages alive in memory to be able to quickly substitute them when user clicks History buttons.
// Chromium wants those to be separate navigations made via browser process to be able to make decision
Modified: branches/chromium/912/Source/WebCore/storage/AbstractDatabase.cpp (105354 => 105355)
--- branches/chromium/912/Source/WebCore/storage/AbstractDatabase.cpp 2012-01-19 00:42:00 UTC (rev 105354)
+++ branches/chromium/912/Source/WebCore/storage/AbstractDatabase.cpp 2012-01-19 00:49:41 UTC (rev 105355)
@@ -211,6 +211,7 @@
AbstractDatabase::~AbstractDatabase()
{
+ ASSERT(!m_opened);
}
void AbstractDatabase::closeDatabase()
Modified: branches/chromium/912/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp (105354 => 105355)
--- branches/chromium/912/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp 2012-01-19 00:42:00 UTC (rev 105354)
+++ branches/chromium/912/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp 2012-01-19 00:49:41 UTC (rev 105355)
@@ -97,20 +97,25 @@
DatabaseObserver::databaseOpened(database);
}
-class TrackerRemoveOpenDatabaseTask : public ScriptExecutionContext::Task {
+class NotifyDatabaseObserverOnCloseTask : public ScriptExecutionContext::Task {
public:
- static PassOwnPtr<TrackerRemoveOpenDatabaseTask> create(PassRefPtr<AbstractDatabase> database)
+ static PassOwnPtr<NotifyDatabaseObserverOnCloseTask> create(PassRefPtr<AbstractDatabase> database)
{
- return adoptPtr(new TrackerRemoveOpenDatabaseTask(database));
+ return adoptPtr(new NotifyDatabaseObserverOnCloseTask(database));
}
virtual void performTask(ScriptExecutionContext* context)
{
- DatabaseTracker::tracker().removeOpenDatabase(m_database.get());
+ DatabaseObserver::databaseClosed(m_database.get());
}
+ virtual bool isCleanupTask() const
+ {
+ return true;
+ }
+
private:
- TrackerRemoveOpenDatabaseTask(PassRefPtr<AbstractDatabase> database)
+ NotifyDatabaseObserverOnCloseTask(PassRefPtr<AbstractDatabase> database)
: m_database(database)
{
}
@@ -120,11 +125,6 @@
void DatabaseTracker::removeOpenDatabase(AbstractDatabase* database)
{
- if (!database->scriptExecutionContext()->isContextThread()) {
- database->scriptExecutionContext()->postTask(TrackerRemoveOpenDatabaseTask::create(database));
- return;
- }
-
String originIdentifier = database->securityOrigin()->databaseIdentifier();
MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard);
ASSERT(m_openDatabaseMap);
@@ -151,7 +151,10 @@
}
}
- DatabaseObserver::databaseClosed(database);
+ if (!database->scriptExecutionContext()->isContextThread())
+ database->scriptExecutionContext()->postTask(NotifyDatabaseObserverOnCloseTask::create(database));
+ else
+ DatabaseObserver::databaseClosed(database);
}
void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr<AbstractDatabase> >* databases)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes