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/profiles/off_the_record_profile_impl.h" | 5 #include "chrome/browser/profiles/off_the_record_profile_impl.h" |
6 | 6 |
7 #include "chrome/browser/net/ssl_config_service_manager.h" | 7 #include "chrome/browser/net/ssl_config_service_manager.h" |
8 #include "chrome/browser/prefs/browser_prefs.h" | 8 #include "chrome/browser/prefs/browser_prefs.h" |
9 #include "chrome/browser/prefs/pref_registry_simple.h" | 9 #include "chrome/browser/prefs/pref_registry_simple.h" |
10 #include "chrome/browser/prefs/pref_service.h" | 10 #include "chrome/browser/prefs/pref_service.h" |
11 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 11 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
12 #include "chrome/browser/profiles/profile_dependency_manager.h" | 12 #include "chrome/browser/profiles/profile_dependency_manager.h" |
13 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
14 #include "chrome/test/base/browser_with_test_window_test.h" | 14 #include "chrome/test/base/browser_with_test_window_test.h" |
15 #include "chrome/test/base/testing_browser_process.h" | 15 #include "chrome/test/base/testing_browser_process.h" |
16 #include "chrome/test/base/testing_pref_service.h" | 16 #include "chrome/test/base/testing_pref_service.h" |
17 #include "chrome/test/base/testing_profile.h" | 17 #include "chrome/test/base/testing_profile.h" |
18 #include "content/public/browser/host_zoom_map.h" | 18 #include "content/public/browser/host_zoom_map.h" |
19 #include "content/public/browser/notification_details.h" | |
20 #include "content/public/browser/notification_source.h" | |
21 #include "content/public/browser/notification_types.h" | |
22 | 19 |
23 using content::HostZoomMap; | 20 using content::HostZoomMap; |
24 | 21 |
25 namespace { | 22 namespace { |
26 | 23 |
27 class TestingProfileWithHostZoomMap : public TestingProfile, | 24 class TestingProfileWithHostZoomMap : public TestingProfile { |
28 public content::NotificationObserver { | |
29 public: | 25 public: |
30 TestingProfileWithHostZoomMap() { | 26 TestingProfileWithHostZoomMap() |
31 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this); | 27 : zoom_callback_( |
32 registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED, | 28 base::Bind(&TestingProfileWithHostZoomMap::OnZoomLevelChanged, |
33 content::Source<HostZoomMap>(host_zoom_map)); | 29 base::Unretained(this))) { |
| 30 HostZoomMap::GetForBrowserContext(this)->AddZoomLevelChangedCallback( |
| 31 zoom_callback_); |
34 } | 32 } |
35 | 33 |
36 virtual ~TestingProfileWithHostZoomMap() {} | 34 virtual ~TestingProfileWithHostZoomMap() { |
| 35 HostZoomMap::GetForBrowserContext(this)->RemoveZoomLevelChangedCallback( |
| 36 zoom_callback_); |
| 37 } |
37 | 38 |
38 virtual Profile* GetOffTheRecordProfile() OVERRIDE { | 39 virtual Profile* GetOffTheRecordProfile() OVERRIDE { |
39 if (!off_the_record_profile_.get()) | 40 if (!off_the_record_profile_.get()) |
40 off_the_record_profile_.reset(CreateOffTheRecordProfile()); | 41 off_the_record_profile_.reset(CreateOffTheRecordProfile()); |
41 return off_the_record_profile_.get(); | 42 return off_the_record_profile_.get(); |
42 } | 43 } |
43 | 44 |
44 virtual PrefServiceSyncable* GetOffTheRecordPrefs() OVERRIDE { | 45 virtual PrefServiceSyncable* GetOffTheRecordPrefs() OVERRIDE { |
45 return GetPrefs(); | 46 return GetPrefs(); |
46 } | 47 } |
47 | 48 |
48 virtual void Observe(int type, | 49 private: |
49 const content::NotificationSource& source, | 50 void OnZoomLevelChanged(const std::string& host) { |
50 const content::NotificationDetails& details) OVERRIDE { | |
51 const std::string& host = | |
52 *(content::Details<const std::string>(details).ptr()); | |
53 DCHECK(type == content::NOTIFICATION_ZOOM_LEVEL_CHANGED); | |
54 if (host.empty()) | 51 if (host.empty()) |
55 return; | 52 return; |
56 | 53 |
57 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this); | 54 HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this); |
58 double level = host_zoom_map->GetZoomLevel(host); | 55 double level = host_zoom_map->GetZoomLevel(host); |
59 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels); | 56 DictionaryPrefUpdate update(prefs_.get(), prefs::kPerHostZoomLevels); |
60 DictionaryValue* host_zoom_dictionary = update.Get(); | 57 DictionaryValue* host_zoom_dictionary = update.Get(); |
61 if (level == host_zoom_map->GetDefaultZoomLevel()) { | 58 if (level == host_zoom_map->GetDefaultZoomLevel()) { |
62 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); | 59 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); |
63 } else { | 60 } else { |
64 host_zoom_dictionary->SetWithoutPathExpansion( | 61 host_zoom_dictionary->SetWithoutPathExpansion( |
65 host, Value::CreateDoubleValue(level)); | 62 host, Value::CreateDoubleValue(level)); |
66 } | 63 } |
67 } | 64 } |
68 | 65 |
69 private: | |
70 content::NotificationRegistrar registrar_; | |
71 scoped_ptr<Profile> off_the_record_profile_; | 66 scoped_ptr<Profile> off_the_record_profile_; |
72 scoped_ptr<SSLConfigServiceManager> ssl_config_service_manager_; | 67 scoped_ptr<SSLConfigServiceManager> ssl_config_service_manager_; |
73 | 68 |
| 69 content::HostZoomMap::ZoomLevelChangedCallback zoom_callback_; |
| 70 |
74 DISALLOW_COPY_AND_ASSIGN(TestingProfileWithHostZoomMap); | 71 DISALLOW_COPY_AND_ASSIGN(TestingProfileWithHostZoomMap); |
75 }; | 72 }; |
76 | 73 |
77 } // namespace | 74 } // namespace |
78 | 75 |
79 // We need to have a BrowserProcess in g_browser_process variable, since | 76 // We need to have a BrowserProcess in g_browser_process variable, since |
80 // OffTheRecordProfileImpl ctor uses it in | 77 // OffTheRecordProfileImpl ctor uses it in |
81 // ProfileIOData::InitializeProfileParams. | 78 // ProfileIOData::InitializeProfileParams. |
82 class OffTheRecordProfileImplTest : public BrowserWithTestWindowTest { | 79 class OffTheRecordProfileImplTest : public BrowserWithTestWindowTest { |
83 protected: | 80 protected: |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 | 128 |
132 // Prepare parent host zoom map. | 129 // Prepare parent host zoom map. |
133 HostZoomMap* parent_zoom_map = | 130 HostZoomMap* parent_zoom_map = |
134 HostZoomMap::GetForBrowserContext(parent_profile.get()); | 131 HostZoomMap::GetForBrowserContext(parent_profile.get()); |
135 ASSERT_TRUE(parent_zoom_map); | 132 ASSERT_TRUE(parent_zoom_map); |
136 | 133 |
137 parent_zoom_map->SetZoomLevel(host, zoom_level_25); | 134 parent_zoom_map->SetZoomLevel(host, zoom_level_25); |
138 ASSERT_EQ(parent_zoom_map->GetZoomLevel(host), zoom_level_25); | 135 ASSERT_EQ(parent_zoom_map->GetZoomLevel(host), zoom_level_25); |
139 | 136 |
140 // TODO(yosin) We need to wait ProfileImpl::Observe done for | 137 // TODO(yosin) We need to wait ProfileImpl::Observe done for |
141 // NOTIFICATION_ZOOM_LEVEL_CHANGED. | 138 // OnZoomLevelChanged. |
142 | 139 |
143 // Prepare child profile as off the record profile. | 140 // Prepare child profile as off the record profile. |
144 scoped_ptr<OffTheRecordProfileImpl> child_profile( | 141 scoped_ptr<OffTheRecordProfileImpl> child_profile( |
145 new OffTheRecordProfileImpl(parent_profile.get())); | 142 new OffTheRecordProfileImpl(parent_profile.get())); |
146 child_profile->InitHostZoomMap(); | 143 child_profile->InitHostZoomMap(); |
147 | 144 |
148 ProfileDependencyManager::GetInstance()->CreateProfileServices( | 145 ProfileDependencyManager::GetInstance()->CreateProfileServices( |
149 child_profile.get(), false); | 146 child_profile.get(), false); |
150 | 147 |
151 // Prepare child host zoom map. | 148 // Prepare child host zoom map. |
(...skipping 15 matching lines...) Expand all Loading... |
167 child_zoom_map->GetZoomLevel(host)) << | 164 child_zoom_map->GetZoomLevel(host)) << |
168 "Child change must not propagate to parent."; | 165 "Child change must not propagate to parent."; |
169 | 166 |
170 parent_zoom_map->SetZoomLevel(host, zoom_level_40); | 167 parent_zoom_map->SetZoomLevel(host, zoom_level_40); |
171 ASSERT_EQ(parent_zoom_map->GetZoomLevel(host), zoom_level_40); | 168 ASSERT_EQ(parent_zoom_map->GetZoomLevel(host), zoom_level_40); |
172 | 169 |
173 EXPECT_EQ(parent_zoom_map->GetZoomLevel(host), | 170 EXPECT_EQ(parent_zoom_map->GetZoomLevel(host), |
174 child_zoom_map->GetZoomLevel(host)) << | 171 child_zoom_map->GetZoomLevel(host)) << |
175 "Parent change should propagate to child."; | 172 "Parent change should propagate to child."; |
176 } | 173 } |
OLD | NEW |