| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/website_settings/permission_menu_model.h" | 5 #include "chrome/browser/ui/website_settings/permission_menu_model.h" |
| 6 #include "chrome/grit/generated_resources.h" | 6 #include "chrome/grit/generated_resources.h" |
| 7 #include "chrome/test/base/testing_profile.h" |
| 8 #include "content/public/test/test_browser_thread_bundle.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
| 9 | 11 |
| 10 namespace { | 12 namespace { |
| 11 | 13 |
| 12 class TestCallback { | 14 class TestCallback { |
| 13 public: | 15 public: |
| 14 TestCallback() : current_(-1) {} | 16 TestCallback() : current_(-1) {} |
| 15 | 17 |
| 16 PermissionMenuModel::ChangeCallback callback() { | 18 PermissionMenuModel::ChangeCallback callback() { |
| 17 return base::Bind(&TestCallback::PermissionChanged, base::Unretained(this)); | 19 return base::Bind(&TestCallback::PermissionChanged, base::Unretained(this)); |
| 18 } | 20 } |
| 19 void PermissionChanged(const WebsiteSettingsUI::PermissionInfo& permission) { | 21 void PermissionChanged(const WebsiteSettingsUI::PermissionInfo& permission) { |
| 20 current_ = permission.setting; | 22 current_ = permission.setting; |
| 21 } | 23 } |
| 22 | 24 |
| 23 int current_; | 25 int current_; |
| 24 }; | 26 }; |
| 25 | 27 |
| 28 class PermissionMenuModelTest : public testing::Test { |
| 29 protected: |
| 30 TestingProfile* profile() { return &profile_; } |
| 31 |
| 32 private: |
| 33 content::TestBrowserThreadBundle thread_bundle_; |
| 34 TestingProfile profile_; |
| 35 }; |
| 36 |
| 26 } // namespace | 37 } // namespace |
| 27 | 38 |
| 28 TEST(PermissionMenuModelTest, TestDefault) { | 39 TEST_F(PermissionMenuModelTest, TestDefault) { |
| 29 TestCallback callback; | 40 TestCallback callback; |
| 30 WebsiteSettingsUI::PermissionInfo permission; | 41 WebsiteSettingsUI::PermissionInfo permission; |
| 31 permission.type = CONTENT_SETTINGS_TYPE_COOKIES; | 42 permission.type = CONTENT_SETTINGS_TYPE_COOKIES; |
| 32 permission.setting = CONTENT_SETTING_ALLOW; | 43 permission.setting = CONTENT_SETTING_ALLOW; |
| 33 permission.default_setting = CONTENT_SETTING_ALLOW; | 44 permission.default_setting = CONTENT_SETTING_ALLOW; |
| 34 permission.is_incognito = false; | 45 permission.is_incognito = false; |
| 35 PermissionMenuModel model( | 46 PermissionMenuModel model(profile(), GURL("http://www.google.com"), |
| 36 GURL("http://www.google.com"), permission, callback.callback()); | 47 permission, callback.callback()); |
| 37 EXPECT_EQ(3, model.GetItemCount()); | 48 EXPECT_EQ(3, model.GetItemCount()); |
| 38 } | 49 } |
| 39 | 50 |
| 40 TEST(PermissionMenuModelTest, TestDefaultMediaHttp) { | 51 TEST_F(PermissionMenuModelTest, TestDefaultMediaHttp) { |
| 41 for (int i = 0; i < 2; ++i) { | 52 for (int i = 0; i < 2; ++i) { |
| 42 ContentSettingsType type = i ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC | 53 ContentSettingsType type = i ? CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC |
| 43 : CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA; | 54 : CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA; |
| 44 TestCallback callback; | 55 TestCallback callback; |
| 45 WebsiteSettingsUI::PermissionInfo permission; | 56 WebsiteSettingsUI::PermissionInfo permission; |
| 46 permission.type = type; | 57 permission.type = type; |
| 47 permission.setting = CONTENT_SETTING_ALLOW; | 58 permission.setting = CONTENT_SETTING_ALLOW; |
| 48 permission.default_setting = CONTENT_SETTING_ALLOW; | 59 permission.default_setting = CONTENT_SETTING_ALLOW; |
| 49 permission.is_incognito = false; | 60 permission.is_incognito = false; |
| 50 PermissionMenuModel model( | 61 PermissionMenuModel model(profile(), GURL("http://www.google.com"), |
| 51 GURL("http://www.google.com"), permission, callback.callback()); | 62 permission, callback.callback()); |
| 52 EXPECT_EQ(2, model.GetItemCount()); | 63 EXPECT_EQ(2, model.GetItemCount()); |
| 53 } | 64 } |
| 54 } | 65 } |
| 55 | 66 |
| 56 TEST(PermissionMenuModelTest, TestAllowBlock) { | 67 TEST_F(PermissionMenuModelTest, TestAllowBlock) { |
| 57 TestCallback callback; | 68 TestCallback callback; |
| 58 PermissionMenuModel model(GURL("http://www.google.com"), | 69 PermissionMenuModel model(profile(), GURL("http://www.google.com"), |
| 59 CONTENT_SETTING_ALLOW, | 70 CONTENT_SETTING_ALLOW, callback.callback()); |
| 60 callback.callback()); | |
| 61 EXPECT_EQ(2, model.GetItemCount()); | 71 EXPECT_EQ(2, model.GetItemCount()); |
| 62 } | 72 } |
| 63 | 73 |
| 64 TEST(PermissionMenuModelTest, TestFullscreenMouseLockFileUrl) { | 74 TEST_F(PermissionMenuModelTest, TestFullscreenMouseLockFileUrl) { |
| 65 TestCallback callback; | 75 TestCallback callback; |
| 66 WebsiteSettingsUI::PermissionInfo permission; | 76 WebsiteSettingsUI::PermissionInfo permission; |
| 67 permission.type = CONTENT_SETTINGS_TYPE_FULLSCREEN; | 77 permission.type = CONTENT_SETTINGS_TYPE_FULLSCREEN; |
| 68 permission.setting = CONTENT_SETTING_ASK; | 78 permission.setting = CONTENT_SETTING_ASK; |
| 69 permission.default_setting = CONTENT_SETTING_ASK; | 79 permission.default_setting = CONTENT_SETTING_ASK; |
| 70 permission.is_incognito = false; | 80 permission.is_incognito = false; |
| 71 PermissionMenuModel fullscreen_model(GURL("file:///test.html"), permission, | 81 PermissionMenuModel fullscreen_model(profile(), GURL("file:///test.html"), |
| 72 callback.callback()); | 82 permission, callback.callback()); |
| 73 EXPECT_EQ(1, fullscreen_model.GetItemCount()); | 83 EXPECT_EQ(1, fullscreen_model.GetItemCount()); |
| 74 EXPECT_EQ( | 84 EXPECT_EQ( |
| 75 l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ASK), | 85 l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ASK), |
| 76 fullscreen_model.GetLabelAt(0)); | 86 fullscreen_model.GetLabelAt(0)); |
| 77 | 87 |
| 78 permission.type = CONTENT_SETTINGS_TYPE_MOUSELOCK; | 88 permission.type = CONTENT_SETTINGS_TYPE_MOUSELOCK; |
| 79 PermissionMenuModel mouselock_model(GURL("file:///test.html"), permission, | 89 PermissionMenuModel mouselock_model(profile(), GURL("file:///test.html"), |
| 80 callback.callback()); | 90 permission, callback.callback()); |
| 81 EXPECT_EQ(1, mouselock_model.GetItemCount()); | 91 EXPECT_EQ(1, mouselock_model.GetItemCount()); |
| 82 EXPECT_EQ( | 92 EXPECT_EQ( |
| 83 l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ASK), | 93 l10n_util::GetStringUTF16(IDS_WEBSITE_SETTINGS_MENU_ITEM_DEFAULT_ASK), |
| 84 fullscreen_model.GetLabelAt(0)); | 94 fullscreen_model.GetLabelAt(0)); |
| 85 } | 95 } |
| 86 | 96 |
| 87 TEST(PermissionMenuModelTest, TestIncognitoNotifications) { | 97 TEST_F(PermissionMenuModelTest, TestIncognitoNotifications) { |
| 88 TestCallback callback; | 98 TestCallback callback; |
| 89 WebsiteSettingsUI::PermissionInfo permission; | 99 WebsiteSettingsUI::PermissionInfo permission; |
| 90 permission.type = CONTENT_SETTINGS_TYPE_NOTIFICATIONS; | 100 permission.type = CONTENT_SETTINGS_TYPE_NOTIFICATIONS; |
| 91 permission.setting = CONTENT_SETTING_ASK; | 101 permission.setting = CONTENT_SETTING_ASK; |
| 92 permission.default_setting = CONTENT_SETTING_ASK; | 102 permission.default_setting = CONTENT_SETTING_ASK; |
| 93 | 103 |
| 94 permission.is_incognito = false; | 104 permission.is_incognito = false; |
| 95 PermissionMenuModel regular_model(GURL("https://www.google.com"), permission, | 105 PermissionMenuModel regular_model(profile(), GURL("https://www.google.com"), |
| 96 callback.callback()); | 106 permission, callback.callback()); |
| 97 EXPECT_EQ(3, regular_model.GetItemCount()); | 107 EXPECT_EQ(3, regular_model.GetItemCount()); |
| 98 | 108 |
| 99 permission.is_incognito = true; | 109 permission.is_incognito = true; |
| 100 PermissionMenuModel incognito_model(GURL("https://www.google.com"), | 110 PermissionMenuModel incognito_model(profile(), GURL("https://www.google.com"), |
| 101 permission, callback.callback()); | 111 permission, callback.callback()); |
| 102 EXPECT_EQ(2, incognito_model.GetItemCount()); | 112 EXPECT_EQ(2, incognito_model.GetItemCount()); |
| 103 } | 113 } |
| OLD | NEW |