Index: ios/chrome/browser/chrome_paths.mm |
diff --git a/ios/chrome/browser/chrome_paths.mm b/ios/chrome/browser/chrome_paths.mm |
index 0a86fb562d00c2c8d04af06aeac8fc9a5c40be71..7de53b9862217a977eb129a30932c8d0c470873c 100644 |
--- a/ios/chrome/browser/chrome_paths.mm |
+++ b/ios/chrome/browser/chrome_paths.mm |
@@ -10,6 +10,8 @@ |
#include "base/logging.h" |
#include "base/path_service.h" |
#include "base/threading/thread_restrictions.h" |
+#include "components/gcm_driver/gcm_driver_constants.h" |
+#include "ios/chrome/browser/chrome_paths_internal.h" |
namespace ios { |
namespace { |
@@ -60,12 +62,24 @@ bool PathProvider(int key, base::FilePath* result) { |
cur = cur.Append(FILE_PATH_LITERAL("data")); |
break; |
+ case DIR_GLOBAL_GCM_STORE: |
+ if (!PathService::Get(DIR_USER_DATA, &cur)) |
+ return false; |
+ cur = cur.Append(gcm_driver::kGCMStoreDirname); |
+ break; |
+ |
case FILE_LOCAL_STATE: |
- if (!PathService::Get(ios::DIR_USER_DATA, &cur)) |
+ if (!PathService::Get(DIR_USER_DATA, &cur)) |
return false; |
cur = cur.Append(FILE_PATH_LITERAL("Local State")); |
break; |
+ case FILE_RESOURCES_PACK: |
+ if (!base::PathService::Get(base::DIR_MODULE, &cur)) |
+ return false; |
+ cur = cur.Append(FILE_PATH_LITERAL("resources.pak")); |
+ break; |
+ |
default: |
return false; |
} |
@@ -83,4 +97,24 @@ void RegisterPathProvider() { |
PathService::RegisterProvider(PathProvider, PATH_START, PATH_END); |
} |
+void GetUserCacheDirectory(const base::FilePath& browser_state_dir, |
+ base::FilePath* result) { |
+ // If the browser state directory is under ~/Library/Application Support, |
+ // use a suitable cache directory under ~/Library/Caches. |
+ |
+ // Default value in cases where any of the following fails. |
+ *result = browser_state_dir; |
+ |
+ base::FilePath app_data_dir; |
+ if (!PathService::Get(base::DIR_APP_DATA, &app_data_dir)) |
+ return; |
+ base::FilePath cache_dir; |
+ if (!PathService::Get(base::DIR_CACHE, &cache_dir)) |
+ return; |
+ if (!app_data_dir.AppendRelativePath(browser_state_dir, &cache_dir)) |
+ return; |
+ |
+ *result = cache_dir; |
+} |
+ |
} // namespace ios |