Changeset 195235 in webkit
- Timestamp:
- Jan 18, 2016 12:26:42 PM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r195234 r195235 1 2016-01-18 Zan Dobersek <zdobersek@igalia.com> 2 3 Sink the Vector<uint8_t> buffer into the SerializedScriptValue constructor 4 https://bugs.webkit.org/show_bug.cgi?id=142634 5 6 Reviewed by Darin Adler. 7 8 Have the SerializedScriptValue constructor take in the Vector<uint8_t> buffer 9 through an rvalue reference, avoiding the copying into the m_data member. The 10 three-parameter constructor now takes in the Vector<String> blob URL object 11 via const reference, and the std::unique_ptr<> object via a rvalue reference. 12 13 Adjust all the call sites and affected code to now either move or copy a 14 non-movable object into the SerializedScriptValue constructor or the helper 15 methods. 16 17 No new tests -- no change in behavior. 18 19 * bindings/js/IDBBindingUtilities.cpp: 20 (WebCore::deserializeIDBValueDataToJSValue): 21 (WebCore::deserializeIDBValueBuffer): 22 (WebCore::idbValueDataToJSValue): 23 * bindings/js/IDBBindingUtilities.h: 24 * bindings/js/SerializedScriptValue.cpp: 25 (WebCore::SerializedScriptValue::SerializedScriptValue): 26 (WebCore::SerializedScriptValue::create): 27 (WebCore::SerializedScriptValue::numberValue): 28 (WebCore::SerializedScriptValue::undefinedValue): 29 (WebCore::SerializedScriptValue::nullValue): 30 * bindings/js/SerializedScriptValue.h: 31 * testing/Internals.cpp: 32 (WebCore::Internals::deserializeBuffer): 33 1 34 2016-01-18 Olivier Blin <olivier.blin@softathome.com> 2 35 -
trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp
r194789 r195235 449 449 JSValue result; 450 450 if (data.size()) { 451 RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::createFromWireBytes( data);451 RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::createFromWireBytes(Vector<uint8_t>(data)); 452 452 453 453 exec.vm().apiLock().lock(); … … 465 465 Vector<uint8_t> value; 466 466 value.append(prpBuffer->data(), prpBuffer->size()); 467 return deserializeIDBValueBuffer(requestState->exec(), value, keyIsDefined);467 return deserializeIDBValueBuffer(requestState->exec(), WTFMove(value), keyIsDefined); 468 468 } 469 469 … … 471 471 } 472 472 473 static JSValue idbValueDataToJSValue(JSC::ExecState& exec, const Vector<uint8_t>& buffer)473 static JSValue idbValueDataToJSValue(JSC::ExecState& exec, Vector<uint8_t>&& buffer) 474 474 { 475 475 if (buffer.isEmpty()) 476 476 return jsNull(); 477 477 478 RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::createFromWireBytes( buffer);478 RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::createFromWireBytes(WTFMove(buffer)); 479 479 return serializedValue->deserialize(&exec, exec.lexicalGlobalObject(), 0, NonThrowing); 480 480 } 481 481 482 Deprecated::ScriptValue deserializeIDBValueBuffer(JSC::ExecState* exec, const Vector<uint8_t>& buffer, bool keyIsDefined)482 Deprecated::ScriptValue deserializeIDBValueBuffer(JSC::ExecState* exec, Vector<uint8_t>&& buffer, bool keyIsDefined) 483 483 { 484 484 ASSERT(exec); … … 491 491 } 492 492 493 JSValue result = idbValueDataToJSValue(*exec, buffer);493 JSValue result = idbValueDataToJSValue(*exec, WTFMove(buffer)); 494 494 return Deprecated::ScriptValue(exec->vm(), result); 495 495 } … … 500 500 return jsUndefined(); 501 501 502 return idbValueDataToJSValue(exec, *valueData.data());502 return idbValueDataToJSValue(exec, Vector<uint8_t>(*valueData.data())); 503 503 } 504 504 -
trunk/Source/WebCore/bindings/js/IDBBindingUtilities.h
r192798 r195235 61 61 Deprecated::ScriptValue deserializeIDBValueData(ScriptExecutionContext&, const ThreadSafeDataBuffer& valueData); 62 62 Deprecated::ScriptValue deserializeIDBValueBuffer(DOMRequestState*, PassRefPtr<SharedBuffer>, bool keyIsDefined); 63 WEBCORE_EXPORT Deprecated::ScriptValue deserializeIDBValueBuffer(JSC::ExecState*, const Vector<uint8_t>&, bool keyIsDefined);63 WEBCORE_EXPORT Deprecated::ScriptValue deserializeIDBValueBuffer(JSC::ExecState*, Vector<uint8_t>&&, bool keyIsDefined); 64 64 65 65 JSC::JSValue deserializeIDBValueDataToJSValue(JSC::ExecState&, const ThreadSafeDataBuffer& valueData); -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp
r194625 r195235 2596 2596 } 2597 2597 2598 SerializedScriptValue::SerializedScriptValue(const Vector<uint8_t>& buffer) 2599 : m_data(buffer) 2600 { 2601 } 2602 2603 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>& buffer) 2604 { 2605 m_data.swap(buffer); 2606 } 2607 2608 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>& buffer, Vector<String>& blobURLs) 2609 { 2610 m_data.swap(buffer); 2598 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer) 2599 : m_data(WTFMove(buffer)) 2600 { 2601 } 2602 2603 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, const Vector<String>& blobURLs) 2604 : m_data(WTFMove(buffer)) 2605 { 2611 2606 for (auto& string : blobURLs) 2612 2607 addBlobURL(string); 2613 2608 } 2614 2609 2615 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>& buffer, Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray>arrayBufferContentsArray)2616 : m_ arrayBufferContentsArray(WTFMove(arrayBufferContentsArray))2617 { 2618 m_data.swap(buffer); 2610 SerializedScriptValue::SerializedScriptValue(Vector<uint8_t>&& buffer, const Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray>&& arrayBufferContentsArray) 2611 : m_data(WTFMove(buffer)) 2612 , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray)) 2613 { 2619 2614 for (auto& string : blobURLs) 2620 2615 addBlobURL(string); … … 2667 2662 return nullptr; 2668 2663 2669 return adoptRef(*new SerializedScriptValue( buffer, blobURLs, WTFMove(arrayBufferContentsArray)));2664 return adoptRef(*new SerializedScriptValue(WTFMove(buffer), blobURLs, WTFMove(arrayBufferContentsArray))); 2670 2665 } 2671 2666 … … 2675 2670 if (!CloneSerializer::serialize(string, buffer)) 2676 2671 return nullptr; 2677 return adoptRef(*new SerializedScriptValue( buffer));2672 return adoptRef(*new SerializedScriptValue(WTFMove(buffer))); 2678 2673 } 2679 2674 … … 2683 2678 Vector<uint8_t> buffer; 2684 2679 CloneSerializer::serializeNumber(value, buffer); 2685 return adoptRef(*new SerializedScriptValue( buffer));2680 return adoptRef(*new SerializedScriptValue(WTFMove(buffer))); 2686 2681 } 2687 2682 … … 2690 2685 Vector<uint8_t> buffer; 2691 2686 CloneSerializer::serializeUndefined(buffer); 2692 return adoptRef(*new SerializedScriptValue( buffer));2687 return adoptRef(*new SerializedScriptValue(WTFMove(buffer))); 2693 2688 } 2694 2689 #endif … … 2742 2737 Ref<SerializedScriptValue> SerializedScriptValue::nullValue() 2743 2738 { 2744 Vector<uint8_t> buffer; 2745 return adoptRef(*new SerializedScriptValue(buffer)); 2739 return adoptRef(*new SerializedScriptValue(Vector<uint8_t>())); 2746 2740 } 2747 2741 -
trunk/Source/WebCore/bindings/js/SerializedScriptValue.h
r188187 r195235 70 70 71 71 WEBCORE_EXPORT static RefPtr<SerializedScriptValue> create(const String&); 72 static Ref<SerializedScriptValue> adopt(Vector<uint8_t>& buffer)72 static Ref<SerializedScriptValue> adopt(Vector<uint8_t>&& buffer) 73 73 { 74 return adoptRef(*new SerializedScriptValue( buffer));74 return adoptRef(*new SerializedScriptValue(WTFMove(buffer))); 75 75 } 76 76 … … 97 97 #endif 98 98 99 static Ref<SerializedScriptValue> createFromWireBytes( const Vector<uint8_t>& data)99 static Ref<SerializedScriptValue> createFromWireBytes(Vector<uint8_t>&& data) 100 100 { 101 return adoptRef(*new SerializedScriptValue( data));101 return adoptRef(*new SerializedScriptValue(WTFMove(data))); 102 102 } 103 103 const Vector<uint8_t>& toWireBytes() const { return m_data; } … … 112 112 void addBlobURL(const String&); 113 113 114 SerializedScriptValue(const Vector<unsigned char>&); 115 WEBCORE_EXPORT SerializedScriptValue(Vector<unsigned char>&); 116 SerializedScriptValue(Vector<unsigned char>&, Vector<String>& blobURLs); 117 SerializedScriptValue(Vector<unsigned char>&, Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray>); 114 WEBCORE_EXPORT SerializedScriptValue(Vector<unsigned char>&&); 115 SerializedScriptValue(Vector<unsigned char>&&, const Vector<String>& blobURLs); 116 SerializedScriptValue(Vector<unsigned char>&&, const Vector<String>& blobURLs, std::unique_ptr<ArrayBufferContentsArray>&&); 118 117 119 118 Vector<unsigned char> m_data; -
trunk/Source/WebCore/testing/Internals.cpp
r195180 r195235 2503 2503 Vector<uint8_t> bytes; 2504 2504 bytes.append(static_cast<const uint8_t*>(buffer->data()), buffer->byteLength()); 2505 return SerializedScriptValue::adopt( bytes);2505 return SerializedScriptValue::adopt(WTFMove(bytes)); 2506 2506 } 2507 2507 -
trunk/Source/WebKit2/ChangeLog
r195231 r195235 1 2016-01-18 Zan Dobersek <zdobersek@igalia.com> 2 3 Sink the Vector<uint8_t> buffer into the SerializedScriptValue constructor 4 https://bugs.webkit.org/show_bug.cgi?id=142634 5 6 Reviewed by Darin Adler. 7 8 Update API::SerializedScriptValue::adopt() to take in a Vector<uint8_t> 9 rvalue, moving it into the WebCore::SerializedScriptValue::adopt() call. 10 11 Update other places that are affected by the SerializedScriptValue changes. 12 13 * DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp: 14 (WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex): 15 * Shared/API/APISerializedScriptValue.h: 16 (API::SerializedScriptValue::adopt): 17 * Shared/UserData.cpp: 18 (WebKit::UserData::decode): 19 * UIProcess/UserContent/WebUserContentControllerProxy.cpp: 20 (WebKit::WebUserContentControllerProxy::didPostMessage): 21 * UIProcess/WebPageProxy.cpp: 22 (WebKit::WebPageProxy::scriptValueCallback): 23 * WebProcess/WebCoreSupport/SessionStateConversion.cpp: 24 (WebKit::applyFrameState): 25 1 26 2016-01-18 Olivier Blin <olivier.blin@softathome.com> 2 27 -
trunk/Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp
r192783 r195235 777 777 locker = std::make_unique<JSLockHolder>(m_vm.get()); 778 778 779 Deprecated::ScriptValue value = deserializeIDBValueBuffer(m_globalObject->globalExec(), valueBuffer, true);779 Deprecated::ScriptValue value = deserializeIDBValueBuffer(m_globalObject->globalExec(), Vector<uint8_t>(valueBuffer), true); 780 780 Vector<IDBKeyData> indexKeys; 781 781 generateIndexKeysForValue(m_globalObject->globalExec(), metadata, value, indexKeys); -
trunk/Source/WebKit2/Shared/API/APISerializedScriptValue.h
r186229 r195235 50 50 } 51 51 52 static Ref<SerializedScriptValue> adopt(Vector<uint8_t>& buffer)52 static Ref<SerializedScriptValue> adopt(Vector<uint8_t>&& buffer) 53 53 { 54 return adoptRef(*new SerializedScriptValue(WebCore::SerializedScriptValue::adopt( buffer)));54 return adoptRef(*new SerializedScriptValue(WebCore::SerializedScriptValue::adopt(WTFMove(buffer)))); 55 55 } 56 56 -
trunk/Source/WebKit2/Shared/UserData.cpp
r194496 r195235 531 531 return false; 532 532 533 auto vector = dataReference.vector(); 534 result = API::SerializedScriptValue::adopt(vector); 533 result = API::SerializedScriptValue::adopt(dataReference.vector()); 535 534 break; 536 535 } -
trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.cpp
r194496 r195235 178 178 return; 179 179 180 auto buffer = dataReference.vector(); 181 RefPtr<WebCore::SerializedScriptValue> value = WebCore::SerializedScriptValue::adopt(buffer); 182 183 handler->client().didPostMessage(*page, *frame, securityOrigin, *value); 180 handler->client().didPostMessage(*page, *frame, securityOrigin, 181 WebCore::SerializedScriptValue::adopt(dataReference.vector())); 184 182 } 185 183 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r195078 r195235 4704 4704 } 4705 4705 4706 if (dataReference.isEmpty()) { 4707 callback->performCallbackWithReturnValue(nullptr, hadException, details); 4708 return; 4709 } 4710 4706 4711 Vector<uint8_t> data; 4707 4712 data.reserveInitialCapacity(dataReference.size()); 4708 4713 data.append(dataReference.data(), dataReference.size()); 4709 4714 4710 callback->performCallbackWithReturnValue( data.size() ? API::SerializedScriptValue::adopt(data).ptr() : nullptr, hadException, details);4715 callback->performCallbackWithReturnValue(API::SerializedScriptValue::adopt(WTFMove(data)).ptr(), hadException, details); 4711 4716 } 4712 4717 -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/SessionStateConversion.cpp
r194496 r195235 155 155 if (frameState.stateObjectData) { 156 156 Vector<uint8_t> stateObjectData = frameState.stateObjectData.value(); 157 historyItem.setStateObject(SerializedScriptValue::adopt( stateObjectData));157 historyItem.setStateObject(SerializedScriptValue::adopt(WTFMove(stateObjectData))); 158 158 } 159 159
Note: See TracChangeset
for help on using the changeset viewer.