[Webkit-unassigned] [Bug 36595] Forward DatabaseTracker::canEstablishDatabase to chromium layer.
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Mar 25 07:44:04 PDT 2010
https://bugs.webkit.org/show_bug.cgi?id=36595
--- Comment #5 from jochen at chromium.org 2010-03-25 07:44:03 PST ---
(In reply to comment #3)
> (From update of attachment 51633 [details])
> r+ from me, but leaving it r? for now to give some others a chance to chime in.
>
> > diff --git a/WebKit/chromium/public/WebFrameClient.h b/WebKit/chromium/public/WebFrameClient.h
> > index c6f51b6..5ffc2e3 100644
> > --- a/WebKit/chromium/public/WebFrameClient.h
> > +++ b/WebKit/chromium/public/WebFrameClient.h
> > @@ -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
> > @@ -263,6 +263,9 @@ public:
> > // Controls whether scripts are allowed to execute for this frame.
> > virtual bool allowScript(WebFrame*, bool enabledPerSettings) { return enabledPerSettings; }
> >
> > + // Controls whether access to Web Databases is allowed for this frame.
> > + virtual bool allowDatabase(const WebSecurityOrigin&, const WebString&, const WebString&, unsigned long) { return true; }
>
> If anything, I'd probably default this to false...but do what you think is
> best.
The old implementation would return true - this way, other embedders using the
chromium layer won't get bidden by changed behavior.
>
> > +
> > // Notifies the client that the frame would have executed script if script were enabled.
> > virtual void didNotAllowScript(WebFrame*) { }
> >
> > diff --git a/WebKit/chromium/src/DatabaseObserver.cpp b/WebKit/chromium/src/DatabaseObserver.cpp
> > index 54e93e1..1f13351 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
> > @@ -32,13 +32,37 @@
> > #include "DatabaseObserver.h"
> >
> > #include "Database.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 {
> >
> > +bool DatabaseObserver::canEstablishDatabase(ScriptExecutionContext* scriptExecutionContext, const String& name, const String& displayName, unsigned long estimatedSize)
> > +{
> > + ASSERT(isMainThread());
> > + ASSERT(scriptExecutionContext->isDocument() || scriptExecutionContext->isWorkerContext());
> > + if (scriptExecutionContext->isDocument()) {
> > + Document* document = static_cast<Document*>(scriptExecutionContext);
> > + WebFrameImpl* webFrame = WebFrameImpl::fromFrame(document->frame());
> > + return webFrame->client()->allowDatabase(WebSecurityOrigin(scriptExecutionContext->securityOrigin()), name, displayName, estimatedSize);
> > + } else {
> > + WorkerContext* worker = static_cast<WorkerContext*>(scriptExecutionContext);
> > + WorkerLoaderProxy* workerLoaderProxy = &worker->thread()->workerLoaderProxy();
> > + WebWorkerImpl* webWorker = reinterpret_cast<WebWorkerImpl*>(workerLoaderProxy);
> > + return webWorker->allowDatabase(WebSecurityOrigin(scriptExecutionContext->securityOrigin()), name, displayName, estimatedSize);
> > + }
>
> I don't know for sure whether this is the proper way to do this. Seems
> plausible tho.
I've copied this more or less from
WebWorkerClientImpl::createWorkerContextProxy
>
> > +}
> > +
> > void DatabaseObserver::databaseOpened(Database* database)
> > {
> > ASSERT(isMainThread());
> > diff --git a/WebKit/chromium/src/WebWorkerBase.h b/WebKit/chromium/src/WebWorkerBase.h
> > index 0217401..c50d4a3 100644
> > --- a/WebKit/chromium/src/WebWorkerBase.h
> > +++ b/WebKit/chromium/src/WebWorkerBase.h
> > @@ -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
> > @@ -45,8 +45,11 @@ class WorkerThread;
> >
> > namespace WebKit {
> > class WebCommonWorkerClient;
> > +class WebSecurityOrigin;
> > +class WebString;
> > class WebURL;
> > class WebView;
> > +class WebWorker;
> > class WebWorkerClient;
> >
> > // Base class for WebSharedWorkerImpl and WebWorkerImpl. It contains common
> > @@ -77,6 +80,9 @@ public:
> > virtual void postTaskForModeToWorkerContext(
> > PassOwnPtr<WebCore::ScriptExecutionContext::Task>, const WebCore::String& mode);
> >
> > + // Controls whether access to Web Databases is allowed for this worker.
> > + virtual bool allowDatabase(const WebSecurityOrigin&, const WebString&, const WebString&, unsigned long) { return true; }
>
> If anything, I'd probably default this to false...but do what you think is
> best.
>
> > +
> > // Executes the given task on the main thread.
> > static void dispatchTaskToMainThread(PassOwnPtr<WebCore::ScriptExecutionContext::Task>);
> >
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list