Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Side by Side Diff: chrome/browser/chromeos/extensions/default_app_order_unittest.cc

Issue 11318008: cros: Allow default app order to be loaded from an external file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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.
4
5 #include "chrome/browser/chromeos/extensions/default_app_order.h"
6
7 #include <string>
8 #include <vector>
9
10 #include "base/file_path.h"
11 #include "base/file_util.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/path_service.h"
14 #include "base/scoped_temp_dir.h"
15 #include "base/test/scoped_path_override.h"
16 #include "chrome/common/chrome_paths.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18
19 namespace chromeos {
20
21 namespace {
22
23 const FilePath::CharType kTestFile[] =
24 FILE_PATH_LITERAL("test_default_app_order.json");
25 }
26
27 class DefaultAppOrderTest : public testing::Test {
28 public:
29 DefaultAppOrderTest() {}
30 virtual ~DefaultAppOrderTest() {}
31
32 // testing::Test overrides:
33 virtual void SetUp() OVERRIDE {
34 default_app_order::Get(&built_in_default_);
35 }
36 virtual void TearDown() OVERRIDE {
37 }
38
39 bool IsBuiltInDefault(const std::vector<std::string>& apps) {
40 if (apps.size() != built_in_default_.size())
41 return false;
42
43 for (size_t i = 0; i < built_in_default_.size(); ++i) {
44 if (built_in_default_[i] != apps[i])
45 return false;
46 }
47
48 return true;
49 }
50
51 void SetExternalFile(const FilePath& path) {
52 path_override_.reset(new base::ScopedPathOverride(
53 chrome::FILE_DEFAULT_APP_ORDER, path));
54 }
55
56 void CreateExternalOrderFile(const std::string& content) {
57 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
58 FilePath external_file = temp_dir_.path().Append(kTestFile);
59 file_util::WriteFile(external_file, content.c_str(), content.size());
60 SetExternalFile(external_file);
61 }
62
63 private:
64 std::vector<std::string> built_in_default_;
65
66 ScopedTempDir temp_dir_;
67 scoped_ptr<base::ScopedPathOverride> path_override_;
68
69 DISALLOW_COPY_AND_ASSIGN(DefaultAppOrderTest);
70 };
71
72 // Tests that the built-in default order is returned when ExternalLoader is not
73 // created.
74 TEST_F(DefaultAppOrderTest, BuiltInDefault) {
75 std::vector<std::string> apps;
76 default_app_order::Get(&apps);
77 EXPECT_TRUE(IsBuiltInDefault(apps));
78 }
79
80 // Tests external order file overrides built-in default.
81 TEST_F(DefaultAppOrderTest, ExternalOrder) {
82 const char kExternalOrder[] = "[\"app1\",\"app2\",\"app3\"]";
83 CreateExternalOrderFile(std::string(kExternalOrder));
84
85 scoped_ptr<default_app_order::ExternalLoader> loader(
86 new default_app_order::ExternalLoader);
87 loader->WaitForLoad();
88 EXPECT_TRUE(loader->IsLoaded());
89
90 std::vector<std::string> apps;
91 default_app_order::Get(&apps);
92 EXPECT_EQ(3u, apps.size());
93 EXPECT_EQ(std::string("app1"), apps[0]);
94 EXPECT_EQ(std::string("app2"), apps[1]);
95 EXPECT_EQ(std::string("app3"), apps[2]);
96 }
97
98 // Tests none-existent order file gives built-in default.
99 TEST_F(DefaultAppOrderTest, NoExternalFile) {
100 SetExternalFile(FilePath(FILE_PATH_LITERAL("none_existent_file")));
101
102 scoped_ptr<default_app_order::ExternalLoader> loader(
103 new default_app_order::ExternalLoader);
104 loader->WaitForLoad();
105 EXPECT_TRUE(loader->IsLoaded());
106
107 std::vector<std::string> apps;
108 default_app_order::Get(&apps);
109 EXPECT_TRUE(IsBuiltInDefault(apps));
110 }
111
112 // Tests bad json file gives built-in default.
113 TEST_F(DefaultAppOrderTest, BadExternalFile) {
114 const char kExternalOrder[] = "This is not a valid json.";
115 CreateExternalOrderFile(std::string(kExternalOrder));
116
117 scoped_ptr<default_app_order::ExternalLoader> loader(
118 new default_app_order::ExternalLoader);
119 loader->WaitForLoad();
120 EXPECT_TRUE(loader->IsLoaded());
121
122 std::vector<std::string> apps;
123 default_app_order::Get(&apps);
124 EXPECT_TRUE(IsBuiltInDefault(apps));
125 }
126
127 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698