WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
45110
Implement JSC features required for IndexedDB
https://bugs.webkit.org/show_bug.cgi?id=45110
Summary
Implement JSC features required for IndexedDB
Jeremy Orlow
Reported
2010-09-02 07:47:39 PDT
In order for IndexedDB to work on JSC, we need to implement several features. So far: * SerializedScriptValue needs to be serializable to a "wire" format * We need to support the Static extended attribute (being added in
https://bugs.webkit.org/show_bug.cgi?id=45044
)
Attachments
first patch
(59.78 KB, patch)
2011-12-26 03:45 PST
,
Donggwan Kim
no flags
Details
Formatted Diff
Diff
Patch
(59.72 KB, patch)
2011-12-26 04:38 PST
,
Donggwan Kim
sam
: review-
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Patch
(65.54 KB, patch)
2012-01-01 19:23 PST
,
Donggwan Kim
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Patch
(66.33 KB, patch)
2012-01-01 20:39 PST
,
Donggwan Kim
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Patch
(67.94 KB, patch)
2012-01-01 22:30 PST
,
Donggwan Kim
jsbell
: review-
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(36.85 KB, patch)
2012-08-31 08:01 PDT
,
Michael Pruett
no flags
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(37.00 KB, patch)
2012-08-31 09:07 PDT
,
Michael Pruett
no flags
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(51.19 KB, patch)
2012-10-19 01:33 PDT
,
Michael Pruett
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(51.17 KB, patch)
2012-10-19 01:59 PDT
,
Michael Pruett
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(52.31 KB, patch)
2012-10-19 02:11 PDT
,
Michael Pruett
buildbot
: commit-queue-
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(50.17 KB, patch)
2012-10-21 15:13 PDT
,
Michael Pruett
no flags
Details
Formatted Diff
Diff
Implement IndexedDB for JSC
(49.86 KB, patch)
2012-11-08 16:51 PST
,
Michael Pruett
no flags
Details
Formatted Diff
Diff
Show Obsolete
(11)
View All
Add attachment
proposed patch, testcase, etc.
Jeremy Orlow
Comment 1
2010-09-06 10:44:13 PDT
***
Bug 43863
has been marked as a duplicate of this bug. ***
Jeremy Orlow
Comment 2
2010-11-22 07:16:58 PST
Note also that currently all work happens on the main thread. This is OK for Chromium because of our multi-process architecture (which runs IndexedDB on a "main thread" in a different process), but we'll need to actually do the work on a background process for any other implementation (including those using V8).
Robin Qiu
Comment 3
2011-01-18 01:10:10 PST
Is anybody fixing this bug? If nobody, I would like to have a try.
Jeremy Orlow
Comment 4
2011-01-18 01:47:33 PST
I'm pretty sure no one has started on this yet. If you'd like to, that'd be great! Note that in addition to what's already listed: * the build files probably need to be updates and * JSC should have custom bindings for everything we have v8 custom bindings (and you should double check the JSC ones have similar logic) For the serializedScriptValue wire format, I'd suggest trying to re-use the v8 SSV code. My hunch is that you could split it into 2 fairly small JSC/V8 specific classes + a big template class with most of the logic. Not only would this be more maintainable, but it'd also allow implementations to switch between v8/jsc without needing to convert all their IndexedDB data. Note that we're only about 80% done with the overall API. We're hoping to have that done before too long, but lately we've been spending a lot of time tracking down some ugly bugs.
Robin Qiu
Comment 5
2011-01-18 01:52:59 PST
(In reply to
comment #4
)
> I'm pretty sure no one has started on this yet. If you'd like to, that'd be great! >
Thanks for your advices.
Robin Qiu
Comment 6
2011-01-18 19:12:55 PST
Some questions: 1. In many IndexedDB classes, object parameters are passed in ref, but JSC binding code, which are automatically generated, is in point, except changing code like this, is there another way to fix this? : Source/WebCore/storage/IDBObjectStore.h: (see OptionsObject) - PassRefPtr<IDBIndex> createIndex(const String& name, const String& keyPath, const OptionsObject&, ExceptionCode&); + PassRefPtr<IDBIndex> createIndex(const String& name, const String& keyPath, OptionsObject*, ExceptionCode&); 2. OptionsObject is not implemented in JSC, I plan to add OptionObject.idl, OptionObject.cpp/h, and use JSC::JSValue to take place of v8::Local<v8::Value>. Is this all right? 3. In JSC, WebCore::SerializedScriptValue is not derived from ThreadSafeShared<> but from RefCounted<>. In IDB classes, it is assumed to be ThreadSafeShared<>, but in other classes, it is assumed to be RefCounted<>. How to deal with this? multi-inheritance?
Jeremy Orlow
Comment 7
2011-01-19 02:56:11 PST
(In reply to
comment #6
)
> Some questions: > > 1. In many IndexedDB classes, object parameters are passed in ref, but JSC binding code, which are automatically generated, is in point, except changing code like this, is there another way to fix this? : > > Source/WebCore/storage/IDBObjectStore.h: (see OptionsObject) > - PassRefPtr<IDBIndex> createIndex(const String& name, const String& keyPath, const OptionsObject&, ExceptionCode&); > + PassRefPtr<IDBIndex> createIndex(const String& name, const String& keyPath, OptionsObject*, ExceptionCode&);
The options object is not ref-counted, so I'm pretty sure the const & version is the right one. There's probably some list in the generator that you need to add it to. I believe I had to do something similar for v8, but the code bases are pretty different these days.
> 2. OptionsObject is not implemented in JSC, I plan to add OptionObject.idl, OptionObject.cpp/h, and use JSC::JSValue to take place of v8::Local<v8::Value>. > Is this all right?
I don't think you need an IDL. I implemented it much like how SerializedScriptValue is implemented, IIRC: i.e. it's a first class citizen in the bindings generator. Maybe look at my patch that added OO? Otherwise copying and changing the v8 specific parts probably makes sense (unless you can think of a clean way to share the code...but I can't off the top of my head).
> 3. In JSC, WebCore::SerializedScriptValue is not derived from ThreadSafeShared<> but from RefCounted<>. In IDB classes, it is assumed to be ThreadSafeShared<>, but in other classes, it is assumed to be RefCounted<>. How to deal with this? multi-inheritance?
I'm not sure what you mean by multi-inheritance. I think V8's SerializedScriptValue should have a |threadSafeCopy()| method. It would call |m_data.crossThreadString()| and then clone itself. Not sure what we can do other than a copy for JSC's. (Do you know why the latter uses a vector? Would it be possible for it to use a String?)
Donggwan Kim
Comment 8
2011-08-06 20:28:01 PDT
Is there any progress on this patch? I'm interested in this patch.
Robin Qiu
Comment 9
2011-08-06 21:35:17 PDT
To be honest, I didn't really get start. So, please feel free to take it over.
Donggwan Kim
Comment 10
2011-11-07 04:08:57 PST
I have a question about implementing IDBBindingUtilities for JSC. IDBBindingUtilities.cpp have createIDBKeyFromSerializedValueAndKeyPath and injectIDBKeyIntoSerializedValue in V8 To implement it for JSC, i should pass ExecState* to that methods but i couldn't pass to them because there is no way to pass it. Do you have any idea for that?
Donggwan Kim
Comment 11
2011-12-26 03:45:11 PST
Created
attachment 120546
[details]
first patch Patch
WebKit Review Bot
Comment 12
2011-12-26 04:28:58 PST
Attachment 120546
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/CMakeLists.txt', u'Source/W..." exit_code: 1 Source/WebCore/storage/IDBFactoryBackendInterface.h:59: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendInterface.h:60: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendInterface.h:61: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendImpl.h:61: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendImpl.h:62: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendImpl.h:63: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Source/WebCore/storage/IDBFactoryBackendImpl.h:68: The parameter name "context" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 7 in 27 files If any of these errors are false positives, please file a bug against check-webkit-style.
Donggwan Kim
Comment 13
2011-12-26 04:38:42 PST
Created
attachment 120549
[details]
Patch Fix style check problem
WebKit Review Bot
Comment 14
2011-12-26 05:05:33 PST
Comment on
attachment 120549
[details]
Patch
Attachment 120549
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11035076
Adam Barth
Comment 15
2011-12-26 13:24:51 PST
Comment on
attachment 120549
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=120549&action=review
> Source/WebCore/storage/IDBKeyPathBackendImpl.cpp:51 > +#if USE(JSC)
WebCore proper shouldn't have any JSC specific code. All the JSC specific code should be in the bindings.
Donggwan Kim
Comment 16
2011-12-26 20:27:31 PST
I understand what you meant. However, without including USE(JSC), I couldn't find any way that enables KeyPathBackendImpl to use IDBBindingUtilities methods (e.g., createIDBKeyFromSerializedValueAndKeyPath and injectIDBKeyIntoSerializedValue). In JSC, the above JSC binding mothods require ExecState as a parameter unlike to V8. Therefore, I have appended USE(JSC) into the WebCore codes. If you have any idea without needing to include USE(JSC) for this purpose, I would be happy to know about it. Thanks,
Sam Weinig
Comment 17
2011-12-27 08:32:52 PST
Comment on
attachment 120549
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=120549&action=review
This of course needs a changelog.
> Source/WebCore/bindings/js/OptionsObject.h:58 > +class OptionsObject { > +public: > + OptionsObject(); > + OptionsObject(JSC::ExecState*, const JSC::JSValue& options); > + > + OptionsObject& operator=(const OptionsObject&); > + > + bool get(const String&, bool&) const; > + bool get(const String&, int32_t&) const; > + bool get(const String&, double&) const; > + bool get(const String&, String&) const; > + bool get(const String&, unsigned short&) const; > + bool get(const String&, unsigned&) const; > + bool get(const String&, unsigned long long&) const; > + > + bool getWithUndefinedOrNullCheck(const String&, String&) const; > + > + ~OptionsObject(); > + > +private: > + bool getKey(const String& key, JSC::JSValue&) const; > + > + JSC::ExecState* m_exec; > + JSC::JSValue m_options; > +};
The JSC bindings have a class called JSDictionary which has much of the same functionality has this, I would rather we didn't duplicate this code.
> Source/WebCore/bindings/js/SerializedScriptValue.h:77 > String toString(); > + String toWireString();
It would probably make sense to add a comment explaining what the differences between toString and toWireString are.
>> Source/WebCore/storage/IDBKeyPathBackendImpl.cpp:51 >> +#if USE(JSC) > > WebCore proper shouldn't have any JSC specific code. All the JSC specific code should be in the bindings.
Indeed, why does JSC need special cased code here?
> Source/WebCore/storage/IDBTransactionBackendImpl.h:98 > + ScriptExecutionContext* m_scriptExecutionContext;
What ensures the lifetime of the ScriptExecutionContext here?
Donggwan Kim
Comment 18
2012-01-01 19:23:20 PST
Created
attachment 120854
[details]
Patch
WebKit Review Bot
Comment 19
2012-01-01 19:39:13 PST
Comment on
attachment 120854
[details]
Patch
Attachment 120854
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11024322
Donggwan Kim
Comment 20
2012-01-01 20:39:15 PST
Created
attachment 120859
[details]
Patch Fix chromium build error and append comment to toString and toWireString of SerializedScriptValue.h
Donggwan Kim
Comment 21
2012-01-01 20:49:40 PST
(In reply to
comment #17
)
> (From update of
attachment 120549
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=120549&action=review
> > This of course needs a changelog.
I appended it.
> > > Source/WebCore/bindings/js/OptionsObject.h:58 > > +class OptionsObject { > > +public: > > + OptionsObject(); > > + OptionsObject(JSC::ExecState*, const JSC::JSValue& options); > > + > > + OptionsObject& operator=(const OptionsObject&); > > + > > + bool get(const String&, bool&) const; > > + bool get(const String&, int32_t&) const; > > + bool get(const String&, double&) const; > > + bool get(const String&, String&) const; > > + bool get(const String&, unsigned short&) const; > > + bool get(const String&, unsigned&) const; > > + bool get(const String&, unsigned long long&) const; > > + > > + bool getWithUndefinedOrNullCheck(const String&, String&) const; > > + > > + ~OptionsObject(); > > + > > +private: > > + bool getKey(const String& key, JSC::JSValue&) const; > > + > > + JSC::ExecState* m_exec; > > + JSC::JSValue m_options; > > +}; > > The JSC bindings have a class called JSDictionary which has much of the same functionality has this, I would rather we didn't duplicate this code.
OptionsObject is exposed to WebCore. so I think we should keep this interface like V8.
> > > Source/WebCore/bindings/js/SerializedScriptValue.h:77 > > String toString(); > > + String toWireString(); > > It would probably make sense to add a comment explaining what the differences between toString and toWireString are.
I appended comment to it.
> > >> Source/WebCore/storage/IDBKeyPathBackendImpl.cpp:51 > >> +#if USE(JSC) > > > > WebCore proper shouldn't have any JSC specific code. All the JSC specific code should be in the bindings. > > Indeed, why does JSC need special cased code here?
Two methods createIDBKeyFromSerializedValueAndKeyPath and injectIDBKeyIntoSerializedValue in IDBKeyPathBackendImpl have functionality that create and inject key from and into SerializedScriptValue. To do so, they should use bindings method of SerializedScriptValue. In JSC bindings, they require ExecState as parameter unlike V8.
> > > Source/WebCore/storage/IDBTransactionBackendImpl.h:98 > > + ScriptExecutionContext* m_scriptExecutionContext; > > What ensures the lifetime of the ScriptExecutionContext here?
The lifetime of the ScriptExecutionContext is same as document.
WebKit Review Bot
Comment 22
2012-01-01 21:04:08 PST
Comment on
attachment 120859
[details]
Patch
Attachment 120859
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11028324
Donggwan Kim
Comment 23
2012-01-01 22:30:53 PST
Created
attachment 120864
[details]
Patch Fix chromium build error
WebKit Review Bot
Comment 24
2012-01-01 22:51:22 PST
Comment on
attachment 120864
[details]
Patch
Attachment 120864
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/11056763
Jeff Rogers
Comment 25
2012-03-06 15:00:08 PST
Just curios if there is still working going on for this patch?
Donggwan Kim
Comment 26
2012-03-06 18:17:20 PST
I have to fix chromium build error, but not yet fixed. I will update fixed patch as soon as possible. Thank you for your attention.
Joshua Bell
Comment 27
2012-03-09 14:31:09 PST
https://bugs.webkit.org/show_bug.cgi?id=80207
looks like a duplicated effort on this. Can these be consolidated?
Joshua Bell
Comment 28
2012-04-19 15:25:06 PDT
Comment on
attachment 120864
[details]
Patch Given the changes in
http://trac.webkit.org/changeset/110539
this patch would need to be significantly reworked.
Charles Wei
Comment 29
2012-05-31 19:19:00 PDT
I would like to break this down to a serial of small bugs/patches with each one deals with a specific issue
Charles Wei
Comment 30
2012-07-03 23:47:22 PDT
https://bugs.webkit.org/show_bug.cgi?id=88287
is the only outstanding bug that blocks indexeddb from working for JSC. anybody can help with pushing it forward by a review?
Michael Pruett
Comment 31
2012-08-31 08:01:34 PDT
Created
attachment 161701
[details]
Implement IndexedDB for JSC
WebKit Review Bot
Comment 32
2012-08-31 08:04:13 PDT
Attachment 161701
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1 Source/WebCore/Modules/indexeddb/IDBKeyPathBackendImpl.cpp:45: Missing spaces around = [whitespace/operators] [4] Source/WebCore/Modules/indexeddb/IDBKeyPathBackendImpl.cpp:45: Missing spaces around < [whitespace/operators] [3] Source/WebCore/Modules/indexeddb/IDBKeyPathBackendImpl.cpp:47: One line control clauses should not use braces. [whitespace/braces] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:36: Alphabetical sorting problem. [build/include_order] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:46: This { should be at the end of the previous line [whitespace/braces] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:98: Missing spaces around = [whitespace/operators] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:98: Missing spaces around < [whitespace/operators] [3] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:128: Missing spaces around = [whitespace/operators] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:128: Missing spaces around < [whitespace/operators] [3] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:169: Missing spaces around = [whitespace/operators] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:169: Missing spaces around < [whitespace/operators] [3] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:186: Missing spaces around = [whitespace/operators] [4] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:186: Missing spaces around < [whitespace/operators] [3] Source/WebCore/bindings/js/IDBBindingUtilities.cpp:202: One line control clauses should not use braces. [whitespace/braces] [4] Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h:66: Missing space inside { }. [whitespace/braces] [5] Total errors found: 15 in 30 files If any of these errors are false positives, please file a bug against check-webkit-style.
Michael Pruett
Comment 33
2012-08-31 09:07:40 PDT
Created
attachment 161713
[details]
Implement IndexedDB for JSC With this patch, WebKitGTK+ passes 149 of the 184 tests in storage/indexeddb.
Joshua Bell
Comment 34
2012-08-31 09:28:37 PDT
Comment on
attachment 161713
[details]
Implement IndexedDB for JSC View in context:
https://bugs.webkit.org/attachment.cgi?id=161713&action=review
> Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h:66 > + virtual void postSuccessHandlerCallback() { }
This is fine - in the Chromium port there's an extra layer in place which uses this callback as part of a cursor pre-fetching mechanism, so making the back end be a no-op here is good.
> Source/WebCore/Modules/indexeddb/IDBCursorWithValue.idl:32 > + readonly attribute [V8CustomGetter, JSCustomGetter, CachedAttribute] IDBAny value;
Drive-by comment: we had to use a custom getter for V8 because although we want the value to be re-used across script accesses it needed a mechanism to be invalidated by the cursor. Not sure if CachedAttribute is buying anything (but if it is simplifying code, great!).
> Source/WebCore/Modules/indexeddb/IDBKeyPathBackendImpl.cpp:43 > +void IDBKeyPathBackendImpl::createIDBKeysFromSerializedValuesAndKeyPath(const Vector<RefPtr<SerializedScriptValue>, 0>& values, const IDBKeyPath& keyPath, Vector<RefPtr<IDBKey>, 0>& keys)
This file is being removed in
https://bugs.webkit.org/show_bug.cgi?id=95385
(it is no longer needed)
> Source/WebCore/bindings/js/IDBBindingUtilities.cpp:76 > +static PassRefPtr<IDBKey> createIDBKeyFromValue(ExecState* exec, JSValue value, Vector<JSArray*>& stack)
Some of this may be obsoleted by:
https://bugs.webkit.org/show_bug.cgi?id=94023
https://bugs.webkit.org/show_bug.cgi?id=95409
... which attempt to optimize the pattern of converting ScriptValue -> SerializedScriptValue during binding, then converting SSV back to SV for these key operations, then (sometimes) re-serializing as SSV.
Michael Pruett
Comment 35
2012-08-31 09:53:11 PDT
(In reply to
comment #34
)
> Drive-by comment: we had to use a custom getter for V8 because although we want the value to be re-used across script accesses it needed a mechanism to be invalidated by the cursor. Not sure if CachedAttribute is buying anything (but if it is simplifying code, great!).
I have taken the same approach with the JSC bindings. Although it is necessary to have a custom getter to invalidate the cached value when the cursor value is dirty, CachedAttribute is required for the JSC binding generator to declare the cached m_value member in the JSIDBCursorWithValue class.
Joshua Bell
Comment 36
2012-09-20 09:43:05 PDT
(In reply to
comment #34
)
> > Some of this may be obsoleted by: >
https://bugs.webkit.org/show_bug.cgi?id=94023
>
https://bugs.webkit.org/show_bug.cgi?id=95409
> ... which attempt to optimize the pattern of converting ScriptValue -> SerializedScriptValue during binding, then converting SSV back to SV for these key operations, then (sometimes) re-serializing as SSV.
This is all in now, so this bug should be unblocked. I believe we're done tinkering with these fundamentals, so now is a great time to revisit this.
Michael Pruett
Comment 37
2012-10-19 01:33:12 PDT
Created
attachment 169575
[details]
Implement IndexedDB for JSC
WebKit Review Bot
Comment 38
2012-10-19 01:47:19 PDT
Comment on
attachment 169575
[details]
Implement IndexedDB for JSC
Attachment 169575
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/14459408
Michael Pruett
Comment 39
2012-10-19 01:59:10 PDT
Created
attachment 169577
[details]
Implement IndexedDB for JSC
WebKit Review Bot
Comment 40
2012-10-19 02:10:32 PDT
Comment on
attachment 169577
[details]
Implement IndexedDB for JSC
Attachment 169577
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/14412945
Michael Pruett
Comment 41
2012-10-19 02:11:31 PDT
Created
attachment 169581
[details]
Implement IndexedDB for JSC
Build Bot
Comment 42
2012-10-19 02:52:45 PDT
Comment on
attachment 169581
[details]
Implement IndexedDB for JSC
Attachment 169581
[details]
did not pass mac-ews (mac): Output:
http://queues.webkit.org/results/14424903
New failing tests: fast/events/constructors/message-event-constructor.html fast/files/blob-constructor.html fast/events/constructors/custom-event-constructor.html fast/events/constructors/event-constructors.html fast/dom/Geolocation/argument-types.html fast/events/constructors/pop-state-event-constructor.html fast/events/constructors/storage-event-constructor.html
Michael Pruett
Comment 43
2012-10-21 15:13:15 PDT
Created
attachment 169813
[details]
Implement IndexedDB for JSC With this patch, WebKitGTK+ passes 121 of the 202 tests in storage/indexeddb.
Joshua Bell
Comment 44
2012-10-22 14:23:50 PDT
Comment on
attachment 169813
[details]
Implement IndexedDB for JSC View in context:
https://bugs.webkit.org/attachment.cgi?id=169813&action=review
> Source/WebCore/Modules/indexeddb/IDBCursor.cpp:149 > + RefPtr<IDBKey> keyPathKey = createIDBKeyFromScriptValueAndKeyPath(context, value, keyPath);
These changes look complimentary to the patch over in
https://bugs.webkit.org/show_bug.cgi?id=99975
- watch for collisions.
> Source/WebCore/Modules/indexeddb/IDBCursorWithValue.idl:30 > + [V8CustomGetter, JSCustomGetter, CachedAttribute] readonly attribute IDBAny value;
Does CachedAttribute gain anything here? In the V8 case the V8CustomGetter is used as CachedAttribute doesn't let us "dirty" the values. (As an alternative approach, I was pondering having IDBCursor's properties be "any" in the IDL and just a ScriptValue in the C++, but haven't played with that yet.)
> Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:105 > + const IDBIndexMetadata& indexMetadata,
Indentation here is odd.
> Source/WebCore/bindings/js/SerializedScriptValue.cpp:1845 > + if (m_data.size() & 1) {
Looks like a similar fix to
https://bugs.webkit.org/show_bug.cgi?id=99310
Include the test case?
Joshua Bell
Comment 45
2012-10-22 14:56:36 PDT
> > Source/WebCore/Modules/indexeddb/IDBCursorWithValue.idl:30 > > + [V8CustomGetter, JSCustomGetter, CachedAttribute] readonly attribute IDBAny value;
> (As an alternative approach, I was pondering having IDBCursor's properties be "any" in the IDL and just a ScriptValue in the C++, but haven't played with that yet.)
FYI:
https://bugs.webkit.org/show_bug.cgi?id=100034
Michael Pruett
Comment 46
2012-11-08 16:51:16 PST
Created
attachment 173148
[details]
Implement IndexedDB for JSC I've updated this patch in accordance with other recent changes to IndexedDB. In particular I've removed the custom bindings for IDBCursorWithValue.
> > Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:105 > > + const IDBIndexMetadata& indexMetadata,
>
> Indentation here is odd.
Unfortunately the indentation in the file currently no longer passes check-webkit-style, so retaining the current indentation would seem not to be an option. I would be happy to change the indentation to any style you suggest.
> > Source/WebCore/bindings/js/SerializedScriptValue.cpp:1845 > > + if (m_data.size() & 1) {
>
> Looks like a similar fix to
https://bugs.webkit.org/show_bug.cgi?id=99310
>
> Include the test case?
The only place the JSC implementation of SerializedScriptValue::toWireString() is called is in IDBObjectStoreBackendImpl::putInternal(). This change is covered by numerous tests in storage/indexeddb, including the following which fail without this change: storage/indexeddb/cursor-delete.html storage/indexeddb/cursor-inconsistency.html storage/indexeddb/cursor-key-order.html storage/indexeddb/cursor-prev-no-duplicate.html storage/indexeddb/cursor-value.html storage/indexeddb/database-close.html storage/indexeddb/factory-deletedatabase.html storage/indexeddb/index-multientry.html storage/indexeddb/index-population.html storage/indexeddb/mutating-cursor.html storage/indexeddb/mozilla/put-get-values.html storage/indexeddb/odd-strings.html storage/indexeddb/open-cursor.html storage/indexeddb/transaction-rollback.html storage/indexeddb/two-version-changes.html storage/indexeddb/value-undefined.html storage/indexeddb/values-odd-types.html
Joshua Bell
Comment 47
2012-11-13 16:36:58 PST
(In reply to
comment #46
)
> > > Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:105 > > > + const IDBIndexMetadata& indexMetadata, > > > > Indentation here is odd. > > Unfortunately the indentation in the file currently no longer passes check-webkit-style, so retaining the current indentation would seem not to be an option. I would be happy to change the indentation to any style you suggest.
Yep, the file is currently incorrect. Just remove the line breaks.
Charles Wei
Comment 48
2012-11-13 18:34:32 PST
Comment on
attachment 173148
[details]
Implement IndexedDB for JSC View in context:
https://bugs.webkit.org/attachment.cgi?id=173148&action=review
General comments: it would make it easier to break up the big patches to series of small patches, with each one targetting to solve one specific problem.
> Source/WebCore/bindings/js/IDBBindingUtilities.cpp:48 > +class IDBJSContext {
For this, please refer 88287 which has similar solution but goes no where there waiting for review for a long time. Wish you good luck with this :-)
> Source/WebCore/bindings/js/SerializedScriptValue.cpp:1849 > + }
For this part, please refer: 99310.
Charles Wei
Comment 49
2012-11-13 18:38:39 PST
View in context:
https://bugs.webkit.org/attachment.cgi?id=173148&action=review
General comments: it would make it easier to break up the big patches to series of small patches, with each one targetting to solve one specific problem.
> Source/WebCore/bindings/js/IDBBindingUtilities.cpp:48 > +class IDBJSContext {
For this, please refer 88287 which has similar solution but goes no where there waiting for review for a long time. Wish you good luck with this :-)
> Source/WebCore/bindings/js/SerializedScriptValue.cpp:1849 > + }
For this part, please refer: 99310.
Adam Barth
Comment 50
2012-11-16 09:19:02 PST
Comment on
attachment 173148
[details]
Implement IndexedDB for JSC View in context:
https://bugs.webkit.org/attachment.cgi?id=173148&action=review
> Source/WebCore/bindings/js/IDBBindingUtilities.cpp:73 > + ScriptState* m_scriptState;
Given that we're in the JSC bindings here, we should probably use the type ExecState* for this member.
Martin Robinson
Comment 51
2013-01-18 10:28:29 PST
All dependent bugs are fixed now, so can this be closed?
Alexey Proskuryakov
Comment 52
2015-02-17 19:19:06 PST
Seems like that.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug