| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "ui/gfx/skia_util.h" | 33 #include "ui/gfx/skia_util.h" |
| 34 | 34 |
| 35 namespace extensions { | 35 namespace extensions { |
| 36 | 36 |
| 37 namespace { | 37 namespace { |
| 38 | 38 |
| 39 void VerifyPromptIconCallback( | 39 void VerifyPromptIconCallback( |
| 40 const base::Closure& quit_closure, | 40 const base::Closure& quit_closure, |
| 41 const SkBitmap& expected_bitmap, | 41 const SkBitmap& expected_bitmap, |
| 42 ExtensionInstallPromptShowParams* params, | 42 ExtensionInstallPromptShowParams* params, |
| 43 ExtensionInstallPrompt::Delegate* delegate, | 43 const ExtensionInstallPrompt::DoneCallback& done_callback, |
| 44 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) { | 44 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) { |
| 45 EXPECT_TRUE(gfx::BitmapsAreEqual(prompt->icon().AsBitmap(), expected_bitmap)); | 45 EXPECT_TRUE(gfx::BitmapsAreEqual(prompt->icon().AsBitmap(), expected_bitmap)); |
| 46 quit_closure.Run(); | 46 quit_closure.Run(); |
| 47 } | 47 } |
| 48 | 48 |
| 49 void VerifyPromptPermissionsCallback( | 49 void VerifyPromptPermissionsCallback( |
| 50 const base::Closure& quit_closure, | 50 const base::Closure& quit_closure, |
| 51 size_t regular_permissions_count, | 51 size_t regular_permissions_count, |
| 52 size_t withheld_permissions_count, | 52 size_t withheld_permissions_count, |
| 53 ExtensionInstallPromptShowParams* params, | 53 ExtensionInstallPromptShowParams* params, |
| 54 ExtensionInstallPrompt::Delegate* delegate, | 54 const ExtensionInstallPrompt::DoneCallback& done_callback, |
| 55 scoped_ptr<ExtensionInstallPrompt::Prompt> install_prompt) { | 55 scoped_ptr<ExtensionInstallPrompt::Prompt> install_prompt) { |
| 56 ASSERT_TRUE(install_prompt.get()); | 56 ASSERT_TRUE(install_prompt.get()); |
| 57 EXPECT_EQ(regular_permissions_count, | 57 EXPECT_EQ(regular_permissions_count, |
| 58 install_prompt->GetPermissionCount( | 58 install_prompt->GetPermissionCount( |
| 59 ExtensionInstallPrompt::REGULAR_PERMISSIONS)); | 59 ExtensionInstallPrompt::REGULAR_PERMISSIONS)); |
| 60 EXPECT_EQ(withheld_permissions_count, | 60 EXPECT_EQ(withheld_permissions_count, |
| 61 install_prompt->GetPermissionCount( | 61 install_prompt->GetPermissionCount( |
| 62 ExtensionInstallPrompt::WITHHELD_PERMISSIONS)); | 62 ExtensionInstallPrompt::WITHHELD_PERMISSIONS)); |
| 63 quit_closure.Run(); | 63 quit_closure.Run(); |
| 64 } | 64 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 .Set("name", "foo") | 106 .Set("name", "foo") |
| 107 .Set("version", "1.0") | 107 .Set("version", "1.0") |
| 108 .Set("manifest_version", 2) | 108 .Set("manifest_version", 2) |
| 109 .Set("description", "Random Ext"))) | 109 .Set("description", "Random Ext"))) |
| 110 .Build(); | 110 .Build(); |
| 111 | 111 |
| 112 content::TestWebContentsFactory factory; | 112 content::TestWebContentsFactory factory; |
| 113 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); | 113 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); |
| 114 base::RunLoop run_loop; | 114 base::RunLoop run_loop; |
| 115 prompt.ShowDialog( | 115 prompt.ShowDialog( |
| 116 nullptr, // no delegate | 116 ExtensionInstallPrompt::DoneCallback(), extension.get(), nullptr, |
| 117 extension.get(), nullptr, | |
| 118 make_scoped_ptr(new ExtensionInstallPrompt::Prompt( | 117 make_scoped_ptr(new ExtensionInstallPrompt::Prompt( |
| 119 ExtensionInstallPrompt::PERMISSIONS_PROMPT)), | 118 ExtensionInstallPrompt::PERMISSIONS_PROMPT)), |
| 120 std::move(permission_set), | 119 std::move(permission_set), |
| 121 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), | 120 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), |
| 122 1u, // |regular_permissions_count|. | 121 1u, // |regular_permissions_count|. |
| 123 0u)); // |withheld_permissions_count|. | 122 0u)); // |withheld_permissions_count|. |
| 124 run_loop.Run(); | 123 run_loop.Run(); |
| 125 } | 124 } |
| 126 | 125 |
| 127 TEST_F(ExtensionInstallPromptUnitTest, PromptShowsWithheldPermissions) { | 126 TEST_F(ExtensionInstallPromptUnitTest, PromptShowsWithheldPermissions) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 144 .Append("tabs"))))) | 143 .Append("tabs"))))) |
| 145 .Build(); | 144 .Build(); |
| 146 | 145 |
| 147 content::TestWebContentsFactory factory; | 146 content::TestWebContentsFactory factory; |
| 148 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); | 147 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); |
| 149 base::RunLoop run_loop; | 148 base::RunLoop run_loop; |
| 150 | 149 |
| 151 // We expect <all_hosts> to be withheld, but http://www.google.com/ and tabs | 150 // We expect <all_hosts> to be withheld, but http://www.google.com/ and tabs |
| 152 // permissions should be granted as regular permissions. | 151 // permissions should be granted as regular permissions. |
| 153 prompt.ShowDialog( | 152 prompt.ShowDialog( |
| 154 nullptr, extension.get(), nullptr, | 153 ExtensionInstallPrompt::DoneCallback(), extension.get(), nullptr, |
| 155 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), | 154 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), |
| 156 2u, // |regular_permissions_count|. | 155 2u, // |regular_permissions_count|. |
| 157 1u)); // |withheld_permissions_count|. | 156 1u)); // |withheld_permissions_count|. |
| 158 run_loop.Run(); | 157 run_loop.Run(); |
| 159 } | 158 } |
| 160 | 159 |
| 161 TEST_F(ExtensionInstallPromptUnitTest, | 160 TEST_F(ExtensionInstallPromptUnitTest, |
| 162 DelegatedPromptShowsOptionalPermissions) { | 161 DelegatedPromptShowsOptionalPermissions) { |
| 163 scoped_refptr<const Extension> extension = | 162 scoped_refptr<const Extension> extension = |
| 164 ExtensionBuilder() | 163 ExtensionBuilder() |
| (...skipping 11 matching lines...) Expand all Loading... |
| 176 | 175 |
| 177 content::TestWebContentsFactory factory; | 176 content::TestWebContentsFactory factory; |
| 178 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); | 177 ExtensionInstallPrompt prompt(factory.CreateWebContents(profile())); |
| 179 base::RunLoop run_loop; | 178 base::RunLoop run_loop; |
| 180 | 179 |
| 181 scoped_ptr<ExtensionInstallPrompt::Prompt> sub_prompt( | 180 scoped_ptr<ExtensionInstallPrompt::Prompt> sub_prompt( |
| 182 new ExtensionInstallPrompt::Prompt( | 181 new ExtensionInstallPrompt::Prompt( |
| 183 ExtensionInstallPrompt::DELEGATED_PERMISSIONS_PROMPT)); | 182 ExtensionInstallPrompt::DELEGATED_PERMISSIONS_PROMPT)); |
| 184 sub_prompt->set_delegated_username("Username"); | 183 sub_prompt->set_delegated_username("Username"); |
| 185 prompt.ShowDialog( | 184 prompt.ShowDialog( |
| 186 nullptr, // no delegate | 185 ExtensionInstallPrompt::DoneCallback(), extension.get(), nullptr, |
| 187 extension.get(), nullptr, std::move(sub_prompt), | 186 std::move(sub_prompt), |
| 188 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), | 187 base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(), |
| 189 2u, // |regular_permissions_count|. | 188 2u, // |regular_permissions_count|. |
| 190 0u)); // |withheld_permissions_count|. | 189 0u)); // |withheld_permissions_count|. |
| 191 run_loop.Run(); | 190 run_loop.Run(); |
| 192 } | 191 } |
| 193 | 192 |
| 194 using ExtensionInstallPromptTestWithService = ExtensionServiceTestWithInstall; | 193 using ExtensionInstallPromptTestWithService = ExtensionServiceTestWithInstall; |
| 195 | 194 |
| 196 TEST_F(ExtensionInstallPromptTestWithService, ExtensionInstallPromptIconsTest) { | 195 TEST_F(ExtensionInstallPromptTestWithService, ExtensionInstallPromptIconsTest) { |
| 197 InitializeEmptyExtensionService(); | 196 InitializeEmptyExtensionService(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 214 extension, image_rep, | 213 extension, image_rep, |
| 215 base::Bind(&SetImage, &image, image_loop.QuitClosure())); | 214 base::Bind(&SetImage, &image, image_loop.QuitClosure())); |
| 216 image_loop.Run(); | 215 image_loop.Run(); |
| 217 ASSERT_FALSE(image.IsEmpty()); | 216 ASSERT_FALSE(image.IsEmpty()); |
| 218 content::TestWebContentsFactory factory; | 217 content::TestWebContentsFactory factory; |
| 219 content::WebContents* web_contents = | 218 content::WebContents* web_contents = |
| 220 factory.CreateWebContents(browser_context()); | 219 factory.CreateWebContents(browser_context()); |
| 221 { | 220 { |
| 222 ExtensionInstallPrompt prompt(web_contents); | 221 ExtensionInstallPrompt prompt(web_contents); |
| 223 base::RunLoop run_loop; | 222 base::RunLoop run_loop; |
| 224 prompt.ShowDialog(nullptr, // No delegate. | 223 prompt.ShowDialog(ExtensionInstallPrompt::DoneCallback(), |
| 225 extension, | 224 extension, |
| 226 nullptr, // Force an icon fetch. | 225 nullptr, // Force an icon fetch. |
| 227 base::Bind(&VerifyPromptIconCallback, | 226 base::Bind(&VerifyPromptIconCallback, |
| 228 run_loop.QuitClosure(), image.AsBitmap())); | 227 run_loop.QuitClosure(), image.AsBitmap())); |
| 229 run_loop.Run(); | 228 run_loop.Run(); |
| 230 } | 229 } |
| 231 | 230 |
| 232 { | 231 { |
| 233 ExtensionInstallPrompt prompt(web_contents); | 232 ExtensionInstallPrompt prompt(web_contents); |
| 234 base::RunLoop run_loop; | 233 base::RunLoop run_loop; |
| 235 gfx::ImageSkia app_icon = util::GetDefaultAppIcon(); | 234 gfx::ImageSkia app_icon = util::GetDefaultAppIcon(); |
| 236 prompt.ShowDialog(nullptr, // No delegate. | 235 prompt.ShowDialog(ExtensionInstallPrompt::DoneCallback(), |
| 237 extension, | 236 extension, |
| 238 app_icon.bitmap(), // Use a different icon. | 237 app_icon.bitmap(), // Use a different icon. |
| 239 base::Bind(&VerifyPromptIconCallback, | 238 base::Bind(&VerifyPromptIconCallback, |
| 240 run_loop.QuitClosure(), *app_icon.bitmap())); | 239 run_loop.QuitClosure(), *app_icon.bitmap())); |
| 241 run_loop.Run(); | 240 run_loop.Run(); |
| 242 } | 241 } |
| 243 } | 242 } |
| 244 | 243 |
| 245 } // namespace extensions | 244 } // namespace extensions |
| OLD | NEW |