summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/DatabaseObserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/DatabaseObserver.cpp')
-rw-r--r--WebKit/chromium/src/DatabaseObserver.cpp46
1 files changed, 38 insertions, 8 deletions
diff --git a/WebKit/chromium/src/DatabaseObserver.cpp b/WebKit/chromium/src/DatabaseObserver.cpp
index 54e93e1..f43c9bd 100644
--- a/WebKit/chromium/src/DatabaseObserver.cpp
+++ b/WebKit/chromium/src/DatabaseObserver.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2010 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -31,30 +31,60 @@
#include "config.h"
#include "DatabaseObserver.h"
-#include "Database.h"
+#if ENABLE(DATABASE)
+
+#include "AbstractDatabase.h"
+#include "Document.h"
+#include "ScriptExecutionContext.h"
#include "WebDatabase.h"
#include "WebDatabaseObserver.h"
+#include "WebFrameClient.h"
+#include "WebFrameImpl.h"
+#include "WebSecurityOrigin.h"
+#include "WebWorkerImpl.h"
+#include "WorkerContext.h"
+#include "WorkerThread.h"
using namespace WebKit;
namespace WebCore {
-void DatabaseObserver::databaseOpened(Database* database)
+bool DatabaseObserver::canEstablishDatabase(ScriptExecutionContext* scriptExecutionContext, const String& name, const String& displayName, unsigned long estimatedSize)
+{
+ ASSERT(scriptExecutionContext->isContextThread());
+ ASSERT(scriptExecutionContext->isDocument() || scriptExecutionContext->isWorkerContext());
+ if (scriptExecutionContext->isDocument()) {
+ Document* document = static_cast<Document*>(scriptExecutionContext);
+ WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame());
+ return webFrame->client()->allowDatabase(webFrame, name, displayName, estimatedSize);
+ } else {
+ WorkerContext* workerContext = static_cast<WorkerContext*>(scriptExecutionContext);
+ WorkerLoaderProxy* workerLoaderProxy = &workerContext->thread()->workerLoaderProxy();
+ WebWorkerBase* webWorker = static_cast<WebWorkerBase*>(workerLoaderProxy);
+ return webWorker->allowDatabase(0, name, displayName, estimatedSize);
+ }
+
+ return true;
+}
+
+void DatabaseObserver::databaseOpened(AbstractDatabase* database)
{
- ASSERT(isMainThread());
+ ASSERT(database->scriptExecutionContext()->isContextThread());
WebDatabase::observer()->databaseOpened(WebDatabase(database));
}
-void DatabaseObserver::databaseModified(Database* database)
+void DatabaseObserver::databaseModified(AbstractDatabase* database)
{
- ASSERT(isMainThread());
+ ASSERT(database->scriptExecutionContext()->isContextThread());
WebDatabase::observer()->databaseModified(WebDatabase(database));
}
-void DatabaseObserver::databaseClosed(Database* database)
+void DatabaseObserver::databaseClosed(AbstractDatabase* database)
{
- ASSERT(isMainThread());
+ ASSERT(database->scriptExecutionContext()->isContextThread());
WebDatabase::observer()->databaseClosed(WebDatabase(database));
}
} // namespace WebCore
+
+#endif // ENABLE(DATABASE)