Index: chrome/browser/web_applications/web_app.cc |
diff --git a/chrome/browser/web_applications/web_app.cc b/chrome/browser/web_applications/web_app.cc |
index e7fbb344b101f319b8b1d811f2f850b94ab6bfca..4ff951f7fa94b7842d33e402e9d588b4c9acd2d5 100644 |
--- a/chrome/browser/web_applications/web_app.cc |
+++ b/chrome/browser/web_applications/web_app.cc |
@@ -10,6 +10,7 @@ |
#include "base/string_util.h" |
#include "base/threading/thread.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/common/extensions/extension.h" |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/url_constants.h" |
#include "content/public/browser/browser_thread.h" |
@@ -18,34 +19,6 @@ using content::BrowserThread; |
namespace { |
-// Returns relative directory of given web app url. |
-FilePath GetWebAppDir(const ShellIntegration::ShortcutInfo& info) { |
- if (!info.extension_id.empty()) { |
- std::string app_name = |
- web_app::GenerateApplicationNameFromExtensionId(info.extension_id); |
-#if defined(OS_WIN) |
- return FilePath(UTF8ToUTF16(app_name)); |
-#elif defined(OS_POSIX) |
- return FilePath(app_name); |
-#endif |
- } else { |
- FilePath::StringType host; |
- FilePath::StringType scheme_port; |
- |
-#if defined(OS_WIN) |
- host = UTF8ToUTF16(info.url.host()); |
- scheme_port = (info.url.has_scheme() ? UTF8ToUTF16(info.url.scheme()) |
- : L"http") + FILE_PATH_LITERAL("_") + |
- (info.url.has_port() ? UTF8ToUTF16(info.url.port()) : L"80"); |
-#elif defined(OS_POSIX) |
- host = info.url.host(); |
- scheme_port = info.url.scheme() + FILE_PATH_LITERAL("_") + info.url.port(); |
-#endif |
- |
- return FilePath(host).Append(scheme_port); |
- } |
-} |
- |
#if defined(TOOLKIT_VIEWS) |
// Predicator for sorting images from largest to smallest. |
bool IconPrecedes(const WebApplicationInfo::IconInfo& left, |
@@ -68,12 +41,6 @@ static const char* kCrxAppPrefix = "_crx_"; |
namespace internals { |
-// Returns data directory for given web app url |
-FilePath GetWebAppDataDirectory(const FilePath& root_dir, |
- const ShellIntegration::ShortcutInfo& info) { |
- return root_dir.Append(GetWebAppDir(info)); |
-} |
- |
FilePath GetSanitizedFileName(const string16& name) { |
#if defined(OS_WIN) |
string16 file_name = name; |
@@ -86,6 +53,38 @@ FilePath GetSanitizedFileName(const string16& name) { |
} // namespace internals |
+FilePath GetWebAppDataDirectory(const FilePath& profile_path, |
+ const std::string& extension_id, |
+ const GURL& url) { |
+ FilePath app_data_dir(profile_path.Append(chrome::kWebAppDirname)); |
+ |
+ if (!extension_id.empty()) { |
+ return app_data_dir.AppendASCII( |
+ GenerateApplicationNameFromExtensionId(extension_id)); |
+ } |
+ |
+ std::string host(url.host()); |
+ std::string scheme(url.has_scheme() ? url.scheme() : "http"); |
+ std::string port(url.has_port() ? url.port() : "80"); |
+ std::string scheme_port(scheme + "_" + port); |
+ |
+#if defined(OS_WIN) |
+ FilePath::StringType host_path(UTF8ToUTF16(host)); |
+ FilePath::StringType scheme_port_path(UTF8ToUTF16(scheme_port)); |
+#elif defined(OS_POSIX) |
+ FilePath::StringType host_path(host); |
+ FilePath::StringType scheme_port_path(scheme_port); |
+#endif |
+ |
+ return app_data_dir.Append(host_path).Append(scheme_port_path); |
+} |
+ |
+FilePath GetWebAppDataDirectory(const FilePath& profile_path, |
+ const Extension& extension) { |
+ return GetWebAppDataDirectory( |
+ profile_path, extension.id(), GURL(extension.launch_web_url())); |
+} |
+ |
std::string GenerateApplicationNameFromInfo( |
const ShellIntegration::ShortcutInfo& shortcut_info) { |
if (!shortcut_info.extension_id.empty()) { |
@@ -125,9 +124,10 @@ void CreateShortcut( |
BrowserThread::FILE, |
FROM_HERE, |
base::Bind(&internals::CreateShortcutTask, |
- web_app::internals::GetWebAppDataDirectory( |
- web_app::GetDataDir(data_dir), |
- shortcut_info), |
+ GetWebAppDataDirectory( |
+ data_dir, |
+ shortcut_info.extension_id, |
+ shortcut_info.url), |
data_dir, |
shortcut_info)); |
} |
@@ -149,10 +149,6 @@ bool IsValidUrl(const GURL& url) { |
return false; |
} |
-FilePath GetDataDir(const FilePath& profile_path) { |
- return profile_path.Append(chrome::kWebAppDirname); |
-} |
- |
#if defined(TOOLKIT_VIEWS) |
void GetIconsInfo(const WebApplicationInfo& app_info, |
IconInfoList* icons) { |