void InspectorDOMStorageAgent::getDOMStorageEntries(ErrorString*, const String& storageId, RefPtr<TypeBuilder::Array<TypeBuilder::Array<String> > >& entries) { // FIXME: consider initializing this array after 2 checks below. The checks should return error messages in this case. entries = TypeBuilder::Array<TypeBuilder::Array<String> >::create(); InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId); if (!storageResource) return; Frame* frame = storageResource->frame(); if (!frame) return; // FIXME: Exceptions are not reported here. ExceptionCode ec = 0; StorageArea* storageArea = storageResource->storageArea(); for (unsigned i = 0; i < storageArea->length(ec, frame); ++i) { String name(storageArea->key(i, ec, frame)); if (ec) return; String value(storageArea->getItem(name, ec, frame)); if (ec) return; RefPtr<TypeBuilder::Array<String> > entry = TypeBuilder::Array<String>::create(); entry->addItem(name); entry->addItem(value); entries->addItem(entry); } }
Response InspectorDOMStorageAgent::getDOMStorageItems( std::unique_ptr<protocol::DOMStorage::StorageId> storageId, std::unique_ptr<protocol::Array<protocol::Array<String>>>* items) { LocalFrame* frame = nullptr; StorageArea* storageArea = nullptr; Response response = findStorageArea(std::move(storageId), frame, storageArea); if (!response.isSuccess()) return response; std::unique_ptr<protocol::Array<protocol::Array<String>>> storageItems = protocol::Array<protocol::Array<String>>::create(); TrackExceptionState exceptionState; for (unsigned i = 0; i < storageArea->length(exceptionState, frame); ++i) { String name(storageArea->key(i, exceptionState, frame)); response = toResponse(exceptionState); if (!response.isSuccess()) return response; String value(storageArea->getItem(name, exceptionState, frame)); response = toResponse(exceptionState); if (!response.isSuccess()) return response; std::unique_ptr<protocol::Array<String>> entry = protocol::Array<String>::create(); entry->addItem(name); entry->addItem(value); storageItems->addItem(std::move(entry)); } *items = std::move(storageItems); return Response::OK(); }
void InspectorDOMStorageAgent::getDOMStorageEntries(ErrorString*, int storageId, RefPtr<InspectorArray>& entries) { InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId); if (!storageResource) return; Frame* frame = storageResource->frame(); if (!frame) return; storageResource->startReportingChangesToFrontend(); StorageArea* storageArea = storageResource->storageArea(); for (unsigned i = 0; i < storageArea->length(frame); ++i) { String name(storageArea->key(i, frame)); String value(storageArea->getItem(name, frame)); RefPtr<InspectorArray> entry = InspectorArray::create(); entry->pushString(name); entry->pushString(value); entries->pushArray(entry); } }
void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString* errorString, const RefPtr<JSONObject>& storageId, RefPtr<TypeBuilder::Array<TypeBuilder::Array<String>>>& items) { LocalFrame* frame; StorageArea* storageArea = findStorageArea(errorString, storageId, frame); if (!storageArea) return; RefPtr<TypeBuilder::Array<TypeBuilder::Array<String>>> storageItems = TypeBuilder::Array<TypeBuilder::Array<String>>::create(); TrackExceptionState exceptionState; for (unsigned i = 0; i < storageArea->length(exceptionState, frame); ++i) { String name(storageArea->key(i, exceptionState, frame)); if (hadException(exceptionState, errorString)) return; String value(storageArea->getItem(name, exceptionState, frame)); if (hadException(exceptionState, errorString)) return; RefPtr<TypeBuilder::Array<String>> entry = TypeBuilder::Array<String>::create(); entry->addItem(name); entry->addItem(value); storageItems->addItem(entry); } items = storageItems.release(); }