Revert "Fix broken channel icon in chrome://help on CrOS" and try again
[chromium-blink-merge.git] / ios / chrome / browser / chrome_paths.mm
blob955df2acfa2e0e957ead1870cfcb30cf00f2ca8f
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ios/chrome/browser/chrome_paths.h"
7 #include "base/base_paths.h"
8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h"
10 #include "base/logging.h"
11 #include "base/path_service.h"
12 #include "base/threading/thread_restrictions.h"
14 namespace ios {
15 namespace {
17 #if defined(GOOGLE_CHROME_BUILD)
18 const base::FilePath::CharType kProductDirName[] =
19     FILE_PATH_LITERAL("Google/Chrome");
20 #else
21 const base::FilePath::CharType kProductDirName[] =
22     FILE_PATH_LITERAL("Chromium");
23 #endif
25 bool GetDefaultUserDataDirectory(base::FilePath* result) {
26   if (!PathService::Get(base::DIR_APP_DATA, result)) {
27     NOTREACHED();
28     return false;
29   }
30   *result = result->Append(kProductDirName);
31   return true;
34 bool PathProvider(int key, base::FilePath* result) {
35   // Assume that creation of the directory is not required if it does not exist.
36   // This flag is set to true for the case where it needs to be created.
37   bool create_dir = false;
39   base::FilePath cur;
40   switch (key) {
41     case DIR_USER_DATA:
42       if (!GetDefaultUserDataDirectory(&cur))
43         return false;
44       create_dir = true;
45       break;
47     case DIR_CRASH_DUMPS:
48       if (!GetDefaultUserDataDirectory(&cur))
49         return false;
50       cur = cur.Append(FILE_PATH_LITERAL("Crash Reports"));
51       create_dir = true;
52       break;
54     case DIR_TEST_DATA:
55       if (!PathService::Get(base::DIR_SOURCE_ROOT, &cur))
56         return false;
57       cur = cur.Append(FILE_PATH_LITERAL("ios"));
58       cur = cur.Append(FILE_PATH_LITERAL("chrome"));
59       cur = cur.Append(FILE_PATH_LITERAL("test"));
60       cur = cur.Append(FILE_PATH_LITERAL("data"));
61       break;
63     default:
64       return false;
65   }
67   if (!base::PathExists(cur)) {
68     if (!create_dir || !base::CreateDirectory(cur))
69       return false;
70   }
72   *result = cur;
73   return true;
76 }  // namespace
78 void RegisterPathProvider() {
79   PathService::RegisterProvider(PathProvider, PATH_START, PATH_END);
82 }  // namespace ios