| Index: Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| diff --git a/Source/bindings/core/v8/ScriptValueSerializer.cpp b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| index f070c230c7abf6160994b516f10dfc2781ed623f..03c7bbb00833a7405e7597a69f854fe3558f54a7 100644
|
| --- a/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| +++ b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| @@ -18,6 +18,7 @@
|
| #include "core/fileapi/FileList.h"
|
| #include "public/platform/Platform.h"
|
| #include "public/platform/WebBlobInfo.h"
|
| +#include "wtf/DateMath.h"
|
| #include "wtf/text/StringHash.h"
|
| #include "wtf/text/StringUTF8Adaptor.h"
|
|
|
| @@ -381,10 +382,10 @@ void SerializedScriptValueWriter::doWriteFile(const File& file)
|
| doWriteUint32(static_cast<uint8_t>(1));
|
|
|
| long long size;
|
| - double lastModified;
|
| - file.captureSnapshot(size, lastModified);
|
| + double lastModifiedMS;
|
| + file.captureSnapshot(size, lastModifiedMS);
|
| doWriteUint64(static_cast<uint64_t>(size));
|
| - doWriteNumber(lastModified);
|
| + doWriteNumber(lastModifiedMS);
|
| } else {
|
| doWriteUint32(static_cast<uint8_t>(0));
|
| }
|
| @@ -989,9 +990,11 @@ bool ScriptValueSerializer::appendFileInfo(const File* file, int* index)
|
| return false;
|
|
|
| long long size = -1;
|
| - double lastModified = invalidFileTime();
|
| - file->captureSnapshot(size, lastModified);
|
| + double lastModifiedMS = invalidFileTime();
|
| + file->captureSnapshot(size, lastModifiedMS);
|
| *index = m_blobInfo->size();
|
| + // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also.
|
| + double lastModified = lastModifiedMS / msPerSecond;
|
| m_blobInfo->append(WebBlobInfo(file->uuid(), file->path(), file->name(), file->type(), lastModified, size));
|
| return true;
|
| }
|
| @@ -1598,7 +1601,7 @@ File* SerializedScriptValueReader::readFileHelper()
|
| String type;
|
| uint32_t hasSnapshot = 0;
|
| uint64_t size = 0;
|
| - double lastModified = 0;
|
| + double lastModifiedMS = 0;
|
| if (!readWebCoreString(&path))
|
| return nullptr;
|
| if (m_version >= 4 && !readWebCoreString(&name))
|
| @@ -1614,14 +1617,16 @@ File* SerializedScriptValueReader::readFileHelper()
|
| if (hasSnapshot) {
|
| if (!doReadUint64(&size))
|
| return nullptr;
|
| - if (!doReadNumber(&lastModified))
|
| + if (!doReadNumber(&lastModifiedMS))
|
| return nullptr;
|
| + if (m_version < 8)
|
| + lastModifiedMS *= msPerSecond;
|
| }
|
| uint32_t isUserVisible = 1;
|
| if (m_version >= 7 && !doReadUint32(&isUserVisible))
|
| return nullptr;
|
| const File::UserVisibility userVisibility = (isUserVisible > 0) ? File::IsUserVisible : File::IsNotUserVisible;
|
| - return File::createFromSerialization(path, name, relativePath, userVisibility, hasSnapshot > 0, size, lastModified, getOrCreateBlobDataHandle(uuid, type));
|
| + return File::createFromSerialization(path, name, relativePath, userVisibility, hasSnapshot > 0, size, lastModifiedMS, getOrCreateBlobDataHandle(uuid, type));
|
| }
|
|
|
| File* SerializedScriptValueReader::readFileIndexHelper()
|
| @@ -1633,7 +1638,9 @@ File* SerializedScriptValueReader::readFileIndexHelper()
|
| if (!doReadUint32(&index) || index >= m_blobInfo->size())
|
| return nullptr;
|
| const WebBlobInfo& info = (*m_blobInfo)[index];
|
| - return File::createFromIndexedSerialization(info.filePath(), info.fileName(), info.size(), info.lastModified(), getOrCreateBlobDataHandle(info.uuid(), info.type(), info.size()));
|
| + // FIXME: transition WebBlobInfo.lastModified to be milliseconds-based also.
|
| + double lastModifiedMS = info.lastModified() * msPerSecond;
|
| + return File::createFromIndexedSerialization(info.filePath(), info.fileName(), info.size(), lastModifiedMS, getOrCreateBlobDataHandle(info.uuid(), info.type(), info.size()));
|
| }
|
|
|
| bool SerializedScriptValueReader::doReadUint32(uint32_t* value)
|
|
|