Diff
Modified: trunk/Source/WebCore/ChangeLog (105530 => 105531)
--- trunk/Source/WebCore/ChangeLog 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/ChangeLog 2012-01-20 20:08:35 UTC (rev 105531)
@@ -1,3 +1,32 @@
+2012-01-20 Sadrul Habib Chowdhury <[email protected]>
+
+ [chromium] Revert a couple of changes in fileapi/ that break tests in chromeos.
+ https://bugs.webkit.org/show_bug.cgi?id=76718
+
+ Reviewed by Darin Fisher.
+
+ * fileapi/BlobURL.cpp:
+ (WebCore::BlobURL::getIdentifier):
+ (WebCore::BlobURL::createBlobURL):
+ * fileapi/BlobURL.h:
+ (WebCore::BlobURL::blobProtocol):
+ * fileapi/DOMFileSystemBase.cpp:
+ (WebCore::DOMFileSystemBase::crackFileSystemURL):
+ * fileapi/DOMFileSystemBase.h:
+ * fileapi/EntryBase.cpp:
+ (WebCore::EntryBase::toURL):
+ * fileapi/FileWriter.cpp:
+ (WebCore::FileWriter::write):
+ (WebCore::FileWriter::truncate):
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::webkitRequestFileSystem):
+ * page/DOMWindow.h:
+ * platform/AsyncFileSystem.cpp:
+ * platform/AsyncFileSystem.h:
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::webkitRequestFileSystem):
+ (WebCore::WorkerContext::webkitRequestFileSystemSync):
+
2012-01-20 Tim Dresser <[email protected]>
Refactor canvas drawing to be more data driven
@@ -3076,6 +3105,7 @@
* platform/image-decoders/skia/ImageDecoderSkia.cpp:
(WebCore::ImageFrame::setStatus):
+
2012-01-17 Nate Chapin <[email protected]>
Ensure we don't cancel revalidation of a CachedResource
Modified: trunk/Source/WebCore/fileapi/BlobURL.cpp (105530 => 105531)
--- trunk/Source/WebCore/fileapi/BlobURL.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/BlobURL.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -39,7 +39,7 @@
namespace WebCore {
-static const char blobProtocol[] = "blob";
+const char BlobURL::kBlobProtocol[] = "blob";
KURL BlobURL::createPublicURL(SecurityOrigin* securityOrigin)
{
@@ -54,7 +54,7 @@
String BlobURL::getIdentifier(const KURL& url)
{
- ASSERT(url.protocolIs(blobProtocol));
+ ASSERT(url.protocolIs(kBlobProtocol));
unsigned startIndex = url.pathAfterLastSlash();
return url.string().substring(startIndex);
@@ -65,7 +65,7 @@
ASSERT(!originString.isEmpty());
if (originString == "null")
return KURL();
- String urlString = blobProtocol;
+ String urlString = kBlobProtocol;
urlString += ":";
urlString += encodeWithURLEscapeSequences(originString);
urlString += "/";
Modified: trunk/Source/WebCore/fileapi/BlobURL.h (105530 => 105531)
--- trunk/Source/WebCore/fileapi/BlobURL.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/BlobURL.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -51,9 +51,11 @@
static KURL createPublicURL(SecurityOrigin*);
static KURL createInternalURL();
static String getIdentifier(const KURL&);
+ static const char* blobProtocol() { return kBlobProtocol; }
private:
static KURL createBlobURL(const String& originString);
+ static const char kBlobProtocol[];
BlobURL() { }
};
Modified: trunk/Source/WebCore/fileapi/DOMFileSystemBase.cpp (105530 => 105531)
--- trunk/Source/WebCore/fileapi/DOMFileSystemBase.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/DOMFileSystemBase.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -50,10 +50,41 @@
namespace WebCore {
-// static
+const char DOMFileSystemBase::kPersistentPathPrefix[] = "persistent";
+const size_t DOMFileSystemBase::kPersistentPathPrefixLength = sizeof(DOMFileSystemBase::kPersistentPathPrefix) - 1;
+const char DOMFileSystemBase::kTemporaryPathPrefix[] = "temporary";
+const size_t DOMFileSystemBase::kTemporaryPathPrefixLength = sizeof(DOMFileSystemBase::kTemporaryPathPrefix) - 1;
+const char DOMFileSystemBase::kExternalPathPrefix[] = "external";
+const size_t DOMFileSystemBase::kExternalPathPrefixLength = sizeof(DOMFileSystemBase::kExternalPathPrefix) - 1;
+
bool DOMFileSystemBase::crackFileSystemURL(const KURL& url, AsyncFileSystem::Type& type, String& filePath)
{
- return AsyncFileSystem::crackFileSystemURL(url, type, filePath);
+ if (!url.protocolIs("filesystem"))
+ return false;
+
+ KURL originURL(ParsedURLString, url.path());
+ String path = decodeURLEscapeSequences(originURL.path());
+ if (path.isEmpty() || path[0] != '/')
+ return false;
+ path = path.substring(1);
+
+ if (path.startsWith(kTemporaryPathPrefix)) {
+ type = AsyncFileSystem::Temporary;
+ path = path.substring(kTemporaryPathPrefixLength);
+ } else if (path.startsWith(kPersistentPathPrefix)) {
+ type = AsyncFileSystem::Persistent;
+ path = path.substring(kPersistentPathPrefixLength);
+ } else if (path.startsWith(kExternalPathPrefix)) {
+ type = AsyncFileSystem::External;
+ path = path.substring(kExternalPathPrefixLength);
+ } else
+ return false;
+
+ if (path.isEmpty() || path[0] != '/')
+ return false;
+
+ filePath.swap(path);
+ return true;
}
DOMFileSystemBase::DOMFileSystemBase(ScriptExecutionContext* context, const String& name, PassOwnPtr<AsyncFileSystem> asyncFileSystem)
Modified: trunk/Source/WebCore/fileapi/DOMFileSystemBase.h (105530 => 105531)
--- trunk/Source/WebCore/fileapi/DOMFileSystemBase.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/DOMFileSystemBase.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -62,6 +62,12 @@
}
virtual ~DOMFileSystemBase();
+ static const char kPersistentPathPrefix[];
+ static const size_t kPersistentPathPrefixLength;
+ static const char kTemporaryPathPrefix[];
+ static const size_t kTemporaryPathPrefixLength;
+ static const char kExternalPathPrefix[];
+ static const size_t kExternalPathPrefixLength;
static bool crackFileSystemURL(const KURL&, AsyncFileSystem::Type&, String& filePath);
const String& name() const { return m_name; }
Modified: trunk/Source/WebCore/fileapi/EntryBase.cpp (105530 => 105531)
--- trunk/Source/WebCore/fileapi/EntryBase.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/EntryBase.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -39,6 +39,7 @@
#include "PlatformString.h"
#include "SecurityOrigin.h"
#include <wtf/PassRefPtr.h>
+#include <wtf/text/StringBuilder.h>
namespace WebCore {
@@ -55,7 +56,27 @@
String EntryBase::toURL()
{
- return m_fileSystem->asyncFileSystem()->toURL(m_fileSystem->securityOrigin()->toString(), m_fullPath);
+ String originString = m_fileSystem->securityOrigin()->toString();
+ ASSERT(!originString.isEmpty());
+ if (originString == "null")
+ return String();
+ StringBuilder result;
+ result.append("filesystem:");
+ result.append(originString);
+ result.append("/");
+ switch (m_fileSystem->asyncFileSystem()->type()) {
+ case AsyncFileSystem::Temporary:
+ result.append(DOMFileSystemBase::kTemporaryPathPrefix);
+ break;
+ case AsyncFileSystem::Persistent:
+ result.append(DOMFileSystemBase::kPersistentPathPrefix);
+ break;
+ case AsyncFileSystem::External:
+ result.append(DOMFileSystemBase::kExternalPathPrefix);
+ break;
+ }
+ result.append(m_fullPath);
+ return result.toString();
}
} // namespace WebCore
Modified: trunk/Source/WebCore/fileapi/FileWriter.cpp (105530 => 105531)
--- trunk/Source/WebCore/fileapi/FileWriter.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/fileapi/FileWriter.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -43,7 +43,7 @@
namespace WebCore {
-static const int maxRecursionDepth = 3;
+static const int kMaxRecursionDepth = 3;
FileWriter::FileWriter(ScriptExecutionContext* context)
: ActiveDOMObject(context, this)
@@ -103,7 +103,7 @@
setError(FileError::TYPE_MISMATCH_ERR, ec);
return;
}
- if (m_recursionDepth > maxRecursionDepth) {
+ if (m_recursionDepth > kMaxRecursionDepth) {
setError(FileError::SECURITY_ERR, ec);
return;
}
@@ -141,7 +141,7 @@
setError(FileError::INVALID_STATE_ERR, ec);
return;
}
- if (m_recursionDepth > maxRecursionDepth) {
+ if (m_recursionDepth > kMaxRecursionDepth) {
setError(FileError::SECURITY_ERR, ec);
return;
}
Modified: trunk/Source/WebCore/page/DOMWindow.cpp (105530 => 105531)
--- trunk/Source/WebCore/page/DOMWindow.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/page/DOMWindow.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -785,7 +785,7 @@
}
AsyncFileSystem::Type fileSystemType = static_cast<AsyncFileSystem::Type>(type);
- if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent) {
+ if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent && fileSystemType != AsyncFileSystem::External) {
DOMFileSystem::scheduleCallback(document, errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
return;
}
@@ -819,6 +819,8 @@
LocalFileSystem::localFileSystem().readFileSystem(document, type, ResolveURICallbacks::create(successCallback, errorCallback, document, filePath));
}
+COMPILE_ASSERT(static_cast<int>(DOMWindow::EXTERNAL) == static_cast<int>(AsyncFileSystem::External), enum_mismatch);
+
COMPILE_ASSERT(static_cast<int>(DOMWindow::TEMPORARY) == static_cast<int>(AsyncFileSystem::Temporary), enum_mismatch);
COMPILE_ASSERT(static_cast<int>(DOMWindow::PERSISTENT) == static_cast<int>(AsyncFileSystem::Persistent), enum_mismatch);
Modified: trunk/Source/WebCore/page/DOMWindow.h (105530 => 105531)
--- trunk/Source/WebCore/page/DOMWindow.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/page/DOMWindow.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -366,6 +366,7 @@
enum FileSystemType {
TEMPORARY,
PERSISTENT,
+ EXTERNAL,
};
void webkitRequestFileSystem(int type, long long size, PassRefPtr<FileSystemCallback>, PassRefPtr<ErrorCallback>);
void webkitResolveLocalFileSystemURL(const String&, PassRefPtr<EntryCallback>, PassRefPtr<ErrorCallback>);
Modified: trunk/Source/WebCore/platform/AsyncFileSystem.cpp (105530 => 105531)
--- trunk/Source/WebCore/platform/AsyncFileSystem.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/platform/AsyncFileSystem.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -36,60 +36,9 @@
#include "AsyncFileSystemCallbacks.h"
#include "FileSystem.h"
#include "NotImplemented.h"
-#include <wtf/text/StringBuilder.h>
namespace WebCore {
-const char AsyncFileSystem::persistentPathPrefix[] = "persistent";
-const size_t AsyncFileSystem::persistentPathPrefixLength = sizeof(AsyncFileSystem::persistentPathPrefix) - 1;
-const char AsyncFileSystem::temporaryPathPrefix[] = "temporary";
-const size_t AsyncFileSystem::temporaryPathPrefixLength = sizeof(AsyncFileSystem::temporaryPathPrefix) - 1;
-
-bool AsyncFileSystem::crackFileSystemURL(const KURL& url, AsyncFileSystem::Type& type, String& filePath)
-{
- if (!url.protocolIs("filesystem"))
- return false;
-
- KURL originURL(ParsedURLString, url.path());
- String path = decodeURLEscapeSequences(originURL.path());
- if (path.isEmpty() || path[0] != '/')
- return false;
- path = path.substring(1);
-
- if (path.startsWith(temporaryPathPrefix)) {
- type = Temporary;
- path = path.substring(temporaryPathPrefixLength);
- } else if (path.startsWith(persistentPathPrefix)) {
- type = Persistent;
- path = path.substring(persistentPathPrefixLength);
- } else
- return false;
-
- if (path.isEmpty() || path[0] != '/')
- return false;
-
- filePath.swap(path);
- return true;
-}
-
-String AsyncFileSystem::toURL(const String& originString, const String& fullPath)
-{
- StringBuilder result;
- result.append("filesystem:");
- result.append(originString);
- result.append("/");
- switch (type()) {
- case Temporary:
- result.append(temporaryPathPrefix);
- break;
- case Persistent:
- result.append(persistentPathPrefix);
- break;
- }
- result.append(fullPath);
- return result.toString();
-}
-
#if !PLATFORM(CHROMIUM)
bool AsyncFileSystem::isAvailable()
{
Modified: trunk/Source/WebCore/platform/AsyncFileSystem.h (105530 => 105531)
--- trunk/Source/WebCore/platform/AsyncFileSystem.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/platform/AsyncFileSystem.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -54,6 +54,7 @@
enum Type {
Temporary,
Persistent,
+ External,
};
virtual void stop() { }
@@ -61,18 +62,6 @@
static bool isAvailable();
- // Path prefixes that are used in the filesystem URLs (that can be obtained by toURL()).
- // http://www.w3.org/TR/file-system-api/#widl-Entry-toURL
- static const char persistentPathPrefix[];
- static const size_t persistentPathPrefixLength;
- static const char temporaryPathPrefix[];
- static const size_t temporaryPathPrefixLength;
-
- static bool crackFileSystemURL(const KURL&, AsyncFileSystem::Type&, String& filePath);
-
- // Returns the filesystem URL for the given originString and fullPath.
- virtual String toURL(const String& originString, const String& fullPath);
-
// Subclass must implement this if it supports synchronous operations.
// This should return false if there are no pending operations.
virtual bool waitForOperationToComplete() { return false; }
Modified: trunk/Source/WebCore/workers/WorkerContext.cpp (105530 => 105531)
--- trunk/Source/WebCore/workers/WorkerContext.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebCore/workers/WorkerContext.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -386,7 +386,7 @@
}
AsyncFileSystem::Type fileSystemType = static_cast<AsyncFileSystem::Type>(type);
- if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent) {
+ if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent && fileSystemType != AsyncFileSystem::External) {
DOMFileSystem::scheduleCallback(this, errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
return;
}
@@ -403,7 +403,7 @@
}
AsyncFileSystem::Type fileSystemType = static_cast<AsyncFileSystem::Type>(type);
- if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent) {
+ if (fileSystemType != AsyncFileSystem::Temporary && fileSystemType != AsyncFileSystem::Persistent && fileSystemType != AsyncFileSystem::External) {
ec = FileException::INVALID_MODIFICATION_ERR;
return 0;
}
@@ -462,6 +462,7 @@
COMPILE_ASSERT(static_cast<int>(WorkerContext::TEMPORARY) == static_cast<int>(AsyncFileSystem::Temporary), enum_mismatch);
COMPILE_ASSERT(static_cast<int>(WorkerContext::PERSISTENT) == static_cast<int>(AsyncFileSystem::Persistent), enum_mismatch);
+COMPILE_ASSERT(static_cast<int>(WorkerContext::EXTERNAL) == static_cast<int>(AsyncFileSystem::External), enum_mismatch);
#endif
WorkerContext::Observer::Observer(WorkerContext* context)
Modified: trunk/Source/WebKit/chromium/ChangeLog (105530 => 105531)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-01-20 20:08:35 UTC (rev 105531)
@@ -1,3 +1,15 @@
+2012-01-20 Sadrul Habib Chowdhury <[email protected]>
+
+ [chromium] Revert a couple of changes in fileapi/ that break tests in chromeos.
+ https://bugs.webkit.org/show_bug.cgi?id=76718
+
+ Reviewed by Darin Fisher.
+
+ * public/platform/WebFileSystem.h:
+ * src/AssertMatchingEnums.cpp:
+ * src/AsyncFileSystemChromium.cpp:
+ * src/AsyncFileSystemChromium.h:
+
2012-01-20 Fady Samuel <[email protected]>
[Chromium] Do not recompute viewport on same page navigation
Modified: trunk/Source/WebKit/chromium/public/platform/WebFileSystem.h (105530 => 105531)
--- trunk/Source/WebKit/chromium/public/platform/WebFileSystem.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebKit/chromium/public/platform/WebFileSystem.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -46,8 +46,6 @@
enum Type {
TypeTemporary,
TypePersistent,
-
- // Chrome specific filesystem type (used by chromeos).
TypeExternal,
};
Modified: trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp (105530 => 105531)
--- trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -433,6 +433,7 @@
#if ENABLE(FILE_SYSTEM)
COMPILE_ASSERT_MATCHING_ENUM(WebFileSystem::TypeTemporary, AsyncFileSystem::Temporary);
COMPILE_ASSERT_MATCHING_ENUM(WebFileSystem::TypePersistent, AsyncFileSystem::Persistent);
+COMPILE_ASSERT_MATCHING_ENUM(WebFileSystem::TypeExternal, AsyncFileSystem::External);
COMPILE_ASSERT_MATCHING_ENUM(WebFileInfo::TypeUnknown, FileMetadata::TypeUnknown);
COMPILE_ASSERT_MATCHING_ENUM(WebFileInfo::TypeFile, FileMetadata::TypeFile);
COMPILE_ASSERT_MATCHING_ENUM(WebFileInfo::TypeDirectory, FileMetadata::TypeDirectory);
Modified: trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp (105530 => 105531)
--- trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.cpp 2012-01-20 20:08:35 UTC (rev 105531)
@@ -34,7 +34,6 @@
#include "AsyncFileSystemCallbacks.h"
#include "AsyncFileWriterChromium.h"
-#include "SecurityOrigin.h"
#include "WebFileInfo.h"
#include "WebFileSystemCallbacksImpl.h"
#include "WebFileWriter.h"
@@ -45,14 +44,6 @@
namespace WebCore {
-namespace {
-
-// Chrome-specific FileSystem type.
-const char externalPathPrefix[] = "external";
-const size_t externalPathPrefixLength = sizeof(externalPathPrefix) - 1;
-
-}
-
bool AsyncFileSystem::isAvailable()
{
return true;
@@ -70,17 +61,6 @@
{
}
-String AsyncFileSystemChromium::toURL(const String& originString, const String& fullPath)
-{
- ASSERT(!m_filesystemRootURL.isEmpty());
- ASSERT(SecurityOrigin::create(m_filesystemRootURL)->toString() == originString);
-
- KURL url = ""
- // Remove the extra leading slash.
- url.setPath(url.path() + encodeWithURLEscapeSequences(fullPath.substring(1)));
- return url;
-}
-
void AsyncFileSystemChromium::move(const String& sourcePath, const String& destinationPath, PassOwnPtr<AsyncFileSystemCallbacks> callbacks)
{
m_webFileSystem->move(virtualPathToFileSystemURL(sourcePath), virtualPathToFileSystemURL(destinationPath), new WebKit::WebFileSystemCallbacksImpl(callbacks));
Modified: trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.h (105530 => 105531)
--- trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.h 2012-01-20 19:44:14 UTC (rev 105530)
+++ trunk/Source/WebKit/chromium/src/AsyncFileSystemChromium.h 2012-01-20 20:08:35 UTC (rev 105531)
@@ -54,7 +54,6 @@
virtual ~AsyncFileSystemChromium();
- virtual String toURL(const String& originString, const String& fullPath);
virtual void move(const String& sourcePath, const String& destinationPath, PassOwnPtr<AsyncFileSystemCallbacks>);
virtual void copy(const String& sourcePath, const String& destinationPath, PassOwnPtr<AsyncFileSystemCallbacks>);
virtual void remove(const String& path, PassOwnPtr<AsyncFileSystemCallbacks>);