Index: webkit/fileapi/file_system_util.cc |
diff --git a/webkit/fileapi/file_system_util.cc b/webkit/fileapi/file_system_util.cc |
index 5aa3cf20af7eb4c9f0106652b81696527ac0bb49..8435a767611fc15e4f2e83688f5bc3b37a95a9ca 100644 |
--- a/webkit/fileapi/file_system_util.cc |
+++ b/webkit/fileapi/file_system_util.cc |
@@ -9,8 +9,12 @@ |
#include "base/file_path.h" |
#include "base/logging.h" |
#include "base/sys_string_conversions.h" |
+#include "base/utf_string_conversions.h" |
#include "googleurl/src/gurl.h" |
#include "net/base/escape.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" |
#include "webkit/fileapi/file_system_types.h" |
namespace fileapi { |
@@ -151,4 +155,26 @@ quota::StorageType FileSystemTypeToQuotaStorageType(FileSystemType type) { |
} |
} |
+// TODO(kinuko): Merge these two methods (conversion methods between |
+// origin url <==> identifier) with the ones in the database module. |
+std::string GetOriginIdentifierFromURL(const GURL& url) { |
+ WebKit::WebSecurityOrigin web_security_origin = |
+ WebKit::WebSecurityOrigin::createFromString(UTF8ToUTF16(url.spec())); |
+ return web_security_origin.databaseIdentifier().utf8(); |
+} |
+ |
+GURL GetOriginURLFromIdentifier(const std::string& origin_identifier) { |
+ WebKit::WebSecurityOrigin web_security_origin = |
+ WebKit::WebSecurityOrigin::createFromDatabaseIdentifier( |
+ UTF8ToUTF16(origin_identifier)); |
+ GURL origin_url(web_security_origin.toString()); |
+ |
+ // We need this work-around for file:/// URIs as |
+ // createFromDatabaseIdentifier returns empty origin_url for them. |
+ if (origin_url.spec().empty() && |
+ origin_identifier.find("file__") == 0) |
+ return GURL("file:///"); |
+ return origin_url; |
+} |
+ |
} // namespace fileapi |