| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/extensions/api/storage/policy_value_store.h" | 5 #include "chrome/browser/extensions/api/storage/policy_value_store.h" | 
| 6 | 6 | 
| 7 #include "base/callback.h" | 7 #include "base/callback.h" | 
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" | 
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" | 
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" | 
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" | 
| 12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" | 
| 13 #include "components/policy/core/common/external_data_fetcher.h" | 13 #include "components/policy/core/common/external_data_fetcher.h" | 
| 14 #include "components/policy/core/common/policy_map.h" | 14 #include "components/policy/core/common/policy_map.h" | 
| 15 #include "components/policy/core/common/policy_types.h" |  | 
| 16 #include "content/public/test/test_browser_thread.h" | 15 #include "content/public/test/test_browser_thread.h" | 
| 17 #include "extensions/browser/api/storage/settings_observer.h" | 16 #include "extensions/browser/api/storage/settings_observer.h" | 
| 18 #include "extensions/browser/value_store/leveldb_value_store.h" | 17 #include "extensions/browser/value_store/leveldb_value_store.h" | 
| 19 #include "extensions/browser/value_store/value_store_unittest.h" | 18 #include "extensions/browser/value_store/value_store_unittest.h" | 
| 20 #include "testing/gmock/include/gmock/gmock.h" | 19 #include "testing/gmock/include/gmock/gmock.h" | 
| 21 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" | 
| 22 | 21 | 
| 23 using testing::_; | 22 using testing::_; | 
| 24 using testing::Mock; | 23 using testing::Mock; | 
| 25 | 24 | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 114   content::TestBrowserThread file_thread_; | 113   content::TestBrowserThread file_thread_; | 
| 115   scoped_ptr<PolicyValueStore> store_; | 114   scoped_ptr<PolicyValueStore> store_; | 
| 116   MockSettingsObserver observer_; | 115   MockSettingsObserver observer_; | 
| 117   scoped_refptr<SettingsObserverList> observers_; | 116   scoped_refptr<SettingsObserverList> observers_; | 
| 118 }; | 117 }; | 
| 119 | 118 | 
| 120 TEST_F(PolicyValueStoreTest, DontProvideRecommendedPolicies) { | 119 TEST_F(PolicyValueStoreTest, DontProvideRecommendedPolicies) { | 
| 121   policy::PolicyMap policies; | 120   policy::PolicyMap policies; | 
| 122   base::FundamentalValue expected(123); | 121   base::FundamentalValue expected(123); | 
| 123   policies.Set("must", policy::POLICY_LEVEL_MANDATORY, | 122   policies.Set("must", policy::POLICY_LEVEL_MANDATORY, | 
| 124                policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 123                policy::POLICY_SCOPE_USER, expected.DeepCopy(), NULL); | 
| 125                expected.DeepCopy(), nullptr); |  | 
| 126   policies.Set("may", policy::POLICY_LEVEL_RECOMMENDED, | 124   policies.Set("may", policy::POLICY_LEVEL_RECOMMENDED, | 
| 127                policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD, | 125                policy::POLICY_SCOPE_USER, | 
| 128                new base::FundamentalValue(456), NULL); | 126                new base::FundamentalValue(456), NULL); | 
| 129   store_->SetCurrentPolicy(policies); | 127   store_->SetCurrentPolicy(policies); | 
| 130   ValueStore::ReadResult result = store_->Get(); | 128   ValueStore::ReadResult result = store_->Get(); | 
| 131   ASSERT_FALSE(result->HasError()); | 129   ASSERT_FALSE(result->HasError()); | 
| 132   EXPECT_EQ(1u, result->settings().size()); | 130   EXPECT_EQ(1u, result->settings().size()); | 
| 133   base::Value* value = NULL; | 131   base::Value* value = NULL; | 
| 134   EXPECT_FALSE(result->settings().Get("may", &value)); | 132   EXPECT_FALSE(result->settings().Get("may", &value)); | 
| 135   EXPECT_TRUE(result->settings().Get("must", &value)); | 133   EXPECT_TRUE(result->settings().Get("must", &value)); | 
| 136   EXPECT_TRUE(base::Value::Equals(&expected, value)); | 134   EXPECT_TRUE(base::Value::Equals(&expected, value)); | 
| 137 } | 135 } | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 160     ValueStoreChangeList changes; | 158     ValueStoreChangeList changes; | 
| 161     changes.push_back(ValueStoreChange("aaa", NULL, value.DeepCopy())); | 159     changes.push_back(ValueStoreChange("aaa", NULL, value.DeepCopy())); | 
| 162     EXPECT_CALL(observer_, | 160     EXPECT_CALL(observer_, | 
| 163                 OnSettingsChanged(kTestExtensionId, | 161                 OnSettingsChanged(kTestExtensionId, | 
| 164                                   settings_namespace::MANAGED, | 162                                   settings_namespace::MANAGED, | 
| 165                                   ValueStoreChange::ToJson(changes))); | 163                                   ValueStoreChange::ToJson(changes))); | 
| 166   } | 164   } | 
| 167 | 165 | 
| 168   policy::PolicyMap policies; | 166   policy::PolicyMap policies; | 
| 169   policies.Set("aaa", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 167   policies.Set("aaa", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 
| 170                policy::POLICY_SOURCE_CLOUD, value.DeepCopy(), nullptr); | 168                value.DeepCopy(), NULL); | 
| 171   store_->SetCurrentPolicy(policies); | 169   store_->SetCurrentPolicy(policies); | 
| 172   loop_.RunUntilIdle(); | 170   loop_.RunUntilIdle(); | 
| 173   Mock::VerifyAndClearExpectations(&observer_); | 171   Mock::VerifyAndClearExpectations(&observer_); | 
| 174 | 172 | 
| 175   // Notify when new policies are added. | 173   // Notify when new policies are added. | 
| 176   { | 174   { | 
| 177     ValueStoreChangeList changes; | 175     ValueStoreChangeList changes; | 
| 178     changes.push_back(ValueStoreChange("bbb", NULL, value.DeepCopy())); | 176     changes.push_back(ValueStoreChange("bbb", NULL, value.DeepCopy())); | 
| 179     EXPECT_CALL(observer_, | 177     EXPECT_CALL(observer_, | 
| 180                 OnSettingsChanged(kTestExtensionId, | 178                 OnSettingsChanged(kTestExtensionId, | 
| 181                                   settings_namespace::MANAGED, | 179                                   settings_namespace::MANAGED, | 
| 182                                   ValueStoreChange::ToJson(changes))); | 180                                   ValueStoreChange::ToJson(changes))); | 
| 183   } | 181   } | 
| 184 | 182 | 
| 185   policies.Set("bbb", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 183   policies.Set("bbb", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 
| 186                policy::POLICY_SOURCE_CLOUD, value.DeepCopy(), nullptr); | 184                value.DeepCopy(), NULL); | 
| 187   store_->SetCurrentPolicy(policies); | 185   store_->SetCurrentPolicy(policies); | 
| 188   loop_.RunUntilIdle(); | 186   loop_.RunUntilIdle(); | 
| 189   Mock::VerifyAndClearExpectations(&observer_); | 187   Mock::VerifyAndClearExpectations(&observer_); | 
| 190 | 188 | 
| 191   // Notify when policies change. | 189   // Notify when policies change. | 
| 192   const base::StringValue new_value("222"); | 190   const base::StringValue new_value("222"); | 
| 193   { | 191   { | 
| 194     ValueStoreChangeList changes; | 192     ValueStoreChangeList changes; | 
| 195     changes.push_back( | 193     changes.push_back( | 
| 196         ValueStoreChange("bbb", value.DeepCopy(), new_value.DeepCopy())); | 194         ValueStoreChange("bbb", value.DeepCopy(), new_value.DeepCopy())); | 
| 197     EXPECT_CALL(observer_, | 195     EXPECT_CALL(observer_, | 
| 198                 OnSettingsChanged(kTestExtensionId, | 196                 OnSettingsChanged(kTestExtensionId, | 
| 199                                   settings_namespace::MANAGED, | 197                                   settings_namespace::MANAGED, | 
| 200                                   ValueStoreChange::ToJson(changes))); | 198                                   ValueStoreChange::ToJson(changes))); | 
| 201   } | 199   } | 
| 202 | 200 | 
| 203   policies.Set("bbb", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 201   policies.Set("bbb", policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER, | 
| 204                policy::POLICY_SOURCE_CLOUD, new_value.DeepCopy(), nullptr); | 202                new_value.DeepCopy(), NULL); | 
| 205   store_->SetCurrentPolicy(policies); | 203   store_->SetCurrentPolicy(policies); | 
| 206   loop_.RunUntilIdle(); | 204   loop_.RunUntilIdle(); | 
| 207   Mock::VerifyAndClearExpectations(&observer_); | 205   Mock::VerifyAndClearExpectations(&observer_); | 
| 208 | 206 | 
| 209   // Notify when policies are removed. | 207   // Notify when policies are removed. | 
| 210   { | 208   { | 
| 211     ValueStoreChangeList changes; | 209     ValueStoreChangeList changes; | 
| 212     changes.push_back(ValueStoreChange("bbb", new_value.DeepCopy(), NULL)); | 210     changes.push_back(ValueStoreChange("bbb", new_value.DeepCopy(), NULL)); | 
| 213     EXPECT_CALL(observer_, | 211     EXPECT_CALL(observer_, | 
| 214                 OnSettingsChanged(kTestExtensionId, | 212                 OnSettingsChanged(kTestExtensionId, | 
| 215                                   settings_namespace::MANAGED, | 213                                   settings_namespace::MANAGED, | 
| 216                                   ValueStoreChange::ToJson(changes))); | 214                                   ValueStoreChange::ToJson(changes))); | 
| 217   } | 215   } | 
| 218 | 216 | 
| 219   policies.Erase("bbb"); | 217   policies.Erase("bbb"); | 
| 220   store_->SetCurrentPolicy(policies); | 218   store_->SetCurrentPolicy(policies); | 
| 221   loop_.RunUntilIdle(); | 219   loop_.RunUntilIdle(); | 
| 222   Mock::VerifyAndClearExpectations(&observer_); | 220   Mock::VerifyAndClearExpectations(&observer_); | 
| 223 | 221 | 
| 224   // Don't notify when there aren't any changes. | 222   // Don't notify when there aren't any changes. | 
| 225   EXPECT_CALL(observer_, OnSettingsChanged(_, _, _)).Times(0); | 223   EXPECT_CALL(observer_, OnSettingsChanged(_, _, _)).Times(0); | 
| 226   store_->SetCurrentPolicy(policies); | 224   store_->SetCurrentPolicy(policies); | 
| 227   loop_.RunUntilIdle(); | 225   loop_.RunUntilIdle(); | 
| 228   Mock::VerifyAndClearExpectations(&observer_); | 226   Mock::VerifyAndClearExpectations(&observer_); | 
| 229 } | 227 } | 
| 230 | 228 | 
| 231 }  // namespace extensions | 229 }  // namespace extensions | 
| OLD | NEW | 
|---|