| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/geolocation/geolocation_exceptions_table_model.h" | 5 #include "chrome/browser/geolocation/geolocation_exceptions_table_model.h" |
| 6 | 6 |
| 7 #include "chrome/browser/browser_thread.h" | 7 #include "chrome/browser/browser_thread.h" |
| 8 #include "chrome/browser/renderer_host/test/test_render_view_host.h" | 8 #include "chrome/browser/renderer_host/test/test_render_view_host.h" |
| 9 #include "chrome/common/content_settings_helper.h" | 9 #include "chrome/common/content_settings_helper.h" |
| 10 #include "chrome/test/testing_profile.h" | 10 #include "chrome/test/testing_profile.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 model_.reset(NULL); | 33 model_.reset(NULL); |
| 34 RenderViewHostTestHarness::TearDown(); | 34 RenderViewHostTestHarness::TearDown(); |
| 35 } | 35 } |
| 36 | 36 |
| 37 virtual void ResetModel() { | 37 virtual void ResetModel() { |
| 38 model_.reset(new GeolocationExceptionsTableModel( | 38 model_.reset(new GeolocationExceptionsTableModel( |
| 39 profile()->GetGeolocationContentSettingsMap())); | 39 profile()->GetGeolocationContentSettingsMap())); |
| 40 } | 40 } |
| 41 | 41 |
| 42 void CreateAllowedSamples() { | 42 void CreateAllowedSamples() { |
| 43 scoped_refptr<GeolocationContentSettingsMap> map = | 43 scoped_refptr<GeolocationContentSettingsMap> map( |
| 44 profile()->GetGeolocationContentSettingsMap(); | 44 profile()->GetGeolocationContentSettingsMap()); |
| 45 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_ALLOW); | 45 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_ALLOW); |
| 46 map->SetContentSetting(kUrl0, kUrl1, CONTENT_SETTING_ALLOW); | 46 map->SetContentSetting(kUrl0, kUrl1, CONTENT_SETTING_ALLOW); |
| 47 map->SetContentSetting(kUrl0, kUrl2, CONTENT_SETTING_ALLOW); | 47 map->SetContentSetting(kUrl0, kUrl2, CONTENT_SETTING_ALLOW); |
| 48 ResetModel(); | 48 ResetModel(); |
| 49 EXPECT_EQ(3, model_->RowCount()); | 49 EXPECT_EQ(3, model_->RowCount()); |
| 50 } | 50 } |
| 51 | 51 |
| 52 protected: | 52 protected: |
| 53 BrowserThread ui_thread_; | 53 BrowserThread ui_thread_; |
| 54 scoped_ptr<GeolocationExceptionsTableModel> model_; | 54 scoped_ptr<GeolocationExceptionsTableModel> model_; |
| 55 }; | 55 }; |
| 56 | 56 |
| 57 TEST_F(GeolocationExceptionsTableModelTest, CanRemoveException) { | 57 TEST_F(GeolocationExceptionsTableModelTest, CanRemoveException) { |
| 58 EXPECT_EQ(0, model_->RowCount()); | 58 EXPECT_EQ(0, model_->RowCount()); |
| 59 | 59 |
| 60 scoped_refptr<GeolocationContentSettingsMap> map = | 60 scoped_refptr<GeolocationContentSettingsMap> map( |
| 61 profile()->GetGeolocationContentSettingsMap(); | 61 profile()->GetGeolocationContentSettingsMap()); |
| 62 | 62 |
| 63 // Ensure a single entry can be removed. | 63 // Ensure a single entry can be removed. |
| 64 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_ALLOW); | 64 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_ALLOW); |
| 65 ResetModel(); | 65 ResetModel(); |
| 66 EXPECT_EQ(1, model_->RowCount()); | 66 EXPECT_EQ(1, model_->RowCount()); |
| 67 GeolocationExceptionsTableModel::Rows rows; | 67 GeolocationExceptionsTableModel::Rows rows; |
| 68 rows.insert(0U); | 68 rows.insert(0U); |
| 69 EXPECT_TRUE(model_->CanRemoveRows(rows)); | 69 EXPECT_TRUE(model_->CanRemoveRows(rows)); |
| 70 | 70 |
| 71 | 71 |
| 72 // Ensure an entry with children can't be removed. | 72 // Ensure an entry with children can't be removed. |
| 73 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_DEFAULT); | 73 map->SetContentSetting(kUrl0, kUrl0, CONTENT_SETTING_DEFAULT); |
| 74 map->SetContentSetting(kUrl0, kUrl1, CONTENT_SETTING_ALLOW); | 74 map->SetContentSetting(kUrl0, kUrl1, CONTENT_SETTING_ALLOW); |
| 75 map->SetContentSetting(kUrl0, kUrl2, CONTENT_SETTING_BLOCK); | 75 map->SetContentSetting(kUrl0, kUrl2, CONTENT_SETTING_BLOCK); |
| 76 ResetModel(); | 76 ResetModel(); |
| 77 EXPECT_EQ(3, model_->RowCount()); | 77 EXPECT_EQ(3, model_->RowCount()); |
| 78 EXPECT_FALSE(model_->CanRemoveRows(rows)); | 78 EXPECT_FALSE(model_->CanRemoveRows(rows)); |
| 79 | 79 |
| 80 // Ensure it can be removed if removing all children. | 80 // Ensure it can be removed if removing all children. |
| 81 rows.clear(); | 81 rows.clear(); |
| 82 rows.insert(1U); | 82 rows.insert(1U); |
| 83 rows.insert(2U); | 83 rows.insert(2U); |
| 84 EXPECT_TRUE(model_->CanRemoveRows(rows)); | 84 EXPECT_TRUE(model_->CanRemoveRows(rows)); |
| 85 } | 85 } |
| 86 | 86 |
| 87 TEST_F(GeolocationExceptionsTableModelTest, RemoveExceptions) { | 87 TEST_F(GeolocationExceptionsTableModelTest, RemoveExceptions) { |
| 88 CreateAllowedSamples(); | 88 CreateAllowedSamples(); |
| 89 scoped_refptr<GeolocationContentSettingsMap> map = | 89 scoped_refptr<GeolocationContentSettingsMap> map( |
| 90 profile()->GetGeolocationContentSettingsMap(); | 90 profile()->GetGeolocationContentSettingsMap()); |
| 91 | 91 |
| 92 // Test removing parent exception. | 92 // Test removing parent exception. |
| 93 GeolocationExceptionsTableModel::Rows rows; | 93 GeolocationExceptionsTableModel::Rows rows; |
| 94 rows.insert(0U); | 94 rows.insert(0U); |
| 95 model_->RemoveRows(rows); | 95 model_->RemoveRows(rows); |
| 96 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); | 96 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); |
| 97 EXPECT_EQ(CONTENT_SETTING_ALLOW, map->GetContentSetting(kUrl0, kUrl1)); | 97 EXPECT_EQ(CONTENT_SETTING_ALLOW, map->GetContentSetting(kUrl0, kUrl1)); |
| 98 EXPECT_EQ(CONTENT_SETTING_ALLOW, map->GetContentSetting(kUrl0, kUrl2)); | 98 EXPECT_EQ(CONTENT_SETTING_ALLOW, map->GetContentSetting(kUrl0, kUrl2)); |
| 99 | 99 |
| 100 ResetModel(); | 100 ResetModel(); |
| 101 EXPECT_EQ(3, model_->RowCount()); | 101 EXPECT_EQ(3, model_->RowCount()); |
| 102 | 102 |
| 103 // Test removing remaining children. | 103 // Test removing remaining children. |
| 104 rows.clear(); | 104 rows.clear(); |
| 105 rows.insert(1U); | 105 rows.insert(1U); |
| 106 rows.insert(2U); | 106 rows.insert(2U); |
| 107 model_->RemoveRows(rows); | 107 model_->RemoveRows(rows); |
| 108 EXPECT_EQ(0, model_->RowCount()); | 108 EXPECT_EQ(0, model_->RowCount()); |
| 109 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); | 109 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); |
| 110 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl1)); | 110 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl1)); |
| 111 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl2)); | 111 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl2)); |
| 112 } | 112 } |
| 113 | 113 |
| 114 TEST_F(GeolocationExceptionsTableModelTest, RemoveAll) { | 114 TEST_F(GeolocationExceptionsTableModelTest, RemoveAll) { |
| 115 CreateAllowedSamples(); | 115 CreateAllowedSamples(); |
| 116 scoped_refptr<GeolocationContentSettingsMap> map = | 116 scoped_refptr<GeolocationContentSettingsMap> map( |
| 117 profile()->GetGeolocationContentSettingsMap(); | 117 profile()->GetGeolocationContentSettingsMap()); |
| 118 | 118 |
| 119 model_->RemoveAll(); | 119 model_->RemoveAll(); |
| 120 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); | 120 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl0)); |
| 121 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl1)); | 121 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl1)); |
| 122 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl2)); | 122 EXPECT_EQ(CONTENT_SETTING_ASK, map->GetContentSetting(kUrl0, kUrl2)); |
| 123 EXPECT_EQ(0, model_->RowCount()); | 123 EXPECT_EQ(0, model_->RowCount()); |
| 124 } | 124 } |
| 125 | 125 |
| 126 TEST_F(GeolocationExceptionsTableModelTest, GetText) { | 126 TEST_F(GeolocationExceptionsTableModelTest, GetText) { |
| 127 CreateAllowedSamples(); | 127 CreateAllowedSamples(); |
| 128 | 128 |
| 129 // Ensure the parent doesn't have any indentation. | 129 // Ensure the parent doesn't have any indentation. |
| 130 std::wstring text(model_->GetText(0, IDS_EXCEPTIONS_HOSTNAME_HEADER)); | 130 std::wstring text(model_->GetText(0, IDS_EXCEPTIONS_HOSTNAME_HEADER)); |
| 131 EXPECT_EQ(content_settings_helper::OriginToWString(kUrl0), text); | 131 EXPECT_EQ(content_settings_helper::OriginToWString(kUrl0), text); |
| 132 | 132 |
| 133 // Ensure there's some indentation on the children nodes. | 133 // Ensure there's some indentation on the children nodes. |
| 134 text = model_->GetText(1, IDS_EXCEPTIONS_HOSTNAME_HEADER); | 134 text = model_->GetText(1, IDS_EXCEPTIONS_HOSTNAME_HEADER); |
| 135 EXPECT_NE(content_settings_helper::OriginToWString(kUrl1), text); | 135 EXPECT_NE(content_settings_helper::OriginToWString(kUrl1), text); |
| 136 EXPECT_NE(std::wstring::npos, | 136 EXPECT_NE(std::wstring::npos, |
| 137 text.find(content_settings_helper::OriginToWString(kUrl1))); | 137 text.find(content_settings_helper::OriginToWString(kUrl1))); |
| 138 | 138 |
| 139 text = model_->GetText(2, IDS_EXCEPTIONS_HOSTNAME_HEADER); | 139 text = model_->GetText(2, IDS_EXCEPTIONS_HOSTNAME_HEADER); |
| 140 EXPECT_NE(content_settings_helper::OriginToWString(kUrl2), text); | 140 EXPECT_NE(content_settings_helper::OriginToWString(kUrl2), text); |
| 141 EXPECT_NE(std::wstring::npos, | 141 EXPECT_NE(std::wstring::npos, |
| 142 text.find(content_settings_helper::OriginToWString(kUrl2))); | 142 text.find(content_settings_helper::OriginToWString(kUrl2))); |
| 143 } | 143 } |
| OLD | NEW |