Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1075)

Side by Side Diff: chrome/browser/extensions/api/management/management_api_browsertest.cc

Issue 1148323007: [Extensions] Introduce a ScopedExtensionDialogAutoConfirm (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/extensions/api/management/management_api_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/files/file_path.h" 5 #include "base/files/file_path.h"
6 #include "base/files/scoped_temp_dir.h" 6 #include "base/files/scoped_temp_dir.h"
7 #include "base/strings/string_util.h" 7 #include "base/strings/string_util.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "chrome/browser/extensions/extension_browsertest.h" 9 #include "chrome/browser/extensions/extension_browsertest.h"
10 #include "chrome/browser/extensions/extension_function_test_utils.h" 10 #include "chrome/browser/extensions/extension_function_test_utils.h"
11 #include "chrome/browser/extensions/extension_install_prompt.h"
12 #include "chrome/browser/extensions/extension_service.h" 11 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/tabs/tab_strip_model.h" 14 #include "chrome/browser/ui/tabs/tab_strip_model.h"
16 #include "content/public/browser/notification_service.h" 15 #include "content/public/browser/notification_service.h"
17 #include "content/public/common/url_constants.h" 16 #include "content/public/common/url_constants.h"
18 #include "content/public/test/browser_test_utils.h" 17 #include "content/public/test/browser_test_utils.h"
19 #include "content/public/test/test_utils.h" 18 #include "content/public/test/test_utils.h"
20 #include "extensions/browser/api/management/management_api.h" 19 #include "extensions/browser/api/management/management_api.h"
21 #include "extensions/browser/api/management/management_api_constants.h" 20 #include "extensions/browser/api/management/management_api_constants.h"
21 #include "extensions/browser/extension_dialog_auto_confirm.h"
22 #include "extensions/browser/extension_host.h" 22 #include "extensions/browser/extension_host.h"
23 #include "extensions/browser/extension_prefs.h" 23 #include "extensions/browser/extension_prefs.h"
24 #include "extensions/browser/extension_system.h" 24 #include "extensions/browser/extension_system.h"
25 #include "extensions/browser/notification_types.h" 25 #include "extensions/browser/notification_types.h"
26 #include "extensions/common/test_util.h" 26 #include "extensions/common/test_util.h"
27 #include "extensions/test/extension_test_message_listener.h" 27 #include "extensions/test/extension_test_message_listener.h"
28 28
29 namespace keys = extension_management_api_constants; 29 namespace keys = extension_management_api_constants;
30 namespace util = extension_function_test_utils; 30 namespace util = extension_function_test_utils;
31 31
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiBrowserTest, 104 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiBrowserTest,
105 GetSelfNoPermissions) { 105 GetSelfNoPermissions) {
106 ExtensionTestMessageListener listener1("success", false); 106 ExtensionTestMessageListener listener1("success", false);
107 ASSERT_TRUE(LoadExtension( 107 ASSERT_TRUE(LoadExtension(
108 test_data_dir_.AppendASCII("management/get_self"))); 108 test_data_dir_.AppendASCII("management/get_self")));
109 ASSERT_TRUE(listener1.WaitUntilSatisfied()); 109 ASSERT_TRUE(listener1.WaitUntilSatisfied());
110 } 110 }
111 111
112 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiBrowserTest, 112 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiBrowserTest,
113 UninstallWithConfirmDialog) {
114 ExtensionService* service = ExtensionSystem::Get(browser()->profile())->
115 extension_service();
116
117 // Install an extension.
118 const Extension* extension = InstallExtension(
119 test_data_dir_.AppendASCII("api_test/management/enabled_extension"), 1);
120 ASSERT_TRUE(extension);
121
122 const std::string id = extension->id();
123
124 scoped_refptr<Extension> empty_extension(test_util::CreateEmptyExtension());
125 // Uninstall, then cancel via the confirm dialog.
126 scoped_refptr<ManagementUninstallFunction> uninstall_function(
127 new ManagementUninstallFunction());
128 uninstall_function->set_extension(empty_extension.get());
129 uninstall_function->set_user_gesture(true);
130 ManagementUninstallFunction::SetAutoConfirmForTest(false);
131
132 EXPECT_TRUE(MatchPattern(
133 util::RunFunctionAndReturnError(
134 uninstall_function.get(),
135 base::StringPrintf("[\"%s\", {\"showConfirmDialog\": true}]",
136 id.c_str()),
137 browser()),
138 keys::kUninstallCanceledError));
139
140 // Make sure the extension wasn't uninstalled.
141 EXPECT_TRUE(service->GetExtensionById(id, false) != NULL);
142
143 // Uninstall, then accept via the confirm dialog.
144 uninstall_function = new ManagementUninstallFunction();
145 uninstall_function->set_extension(empty_extension.get());
146 ManagementUninstallFunction::SetAutoConfirmForTest(true);
147 uninstall_function->set_user_gesture(true);
148 util::RunFunctionAndReturnSingleResult(
149 uninstall_function.get(),
150 base::StringPrintf("[\"%s\", {\"showConfirmDialog\": true}]", id.c_str()),
151 browser());
152
153 // Make sure the extension was uninstalled.
154 EXPECT_TRUE(service->GetExtensionById(id, false) == NULL);
155 }
156
157 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiBrowserTest,
158 CreateAppShortcutConfirmDialog) { 113 CreateAppShortcutConfirmDialog) {
159 const Extension* app = InstallExtension( 114 const Extension* app = InstallExtension(
160 test_data_dir_.AppendASCII("api_test/management/packaged_app"), 1); 115 test_data_dir_.AppendASCII("api_test/management/packaged_app"), 1);
161 ASSERT_TRUE(app); 116 ASSERT_TRUE(app);
162 117
163 const std::string app_id = app->id(); 118 const std::string app_id = app->id();
164 119
165 scoped_refptr<ManagementCreateAppShortcutFunction> create_shortcut_function( 120 scoped_refptr<ManagementCreateAppShortcutFunction> create_shortcut_function(
166 new ManagementCreateAppShortcutFunction()); 121 new ManagementCreateAppShortcutFunction());
167 create_shortcut_function->set_user_gesture(true); 122 create_shortcut_function->set_user_gesture(true);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 std::string reason; 247 std::string reason;
293 EXPECT_TRUE(dict->GetStringASCII(keys::kDisabledReasonKey, &reason)); 248 EXPECT_TRUE(dict->GetStringASCII(keys::kDisabledReasonKey, &reason));
294 EXPECT_EQ(reason, std::string(keys::kDisabledReasonPermissionsIncrease)); 249 EXPECT_EQ(reason, std::string(keys::kDisabledReasonPermissionsIncrease));
295 } 250 }
296 251
297 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiEscalationTest, 252 IN_PROC_BROWSER_TEST_F(ExtensionManagementApiEscalationTest,
298 SetEnabled) { 253 SetEnabled) {
299 // Expect an error about no gesture. 254 // Expect an error about no gesture.
300 SetEnabled(true, false, keys::kGestureNeededForEscalationError); 255 SetEnabled(true, false, keys::kGestureNeededForEscalationError);
301 256
302 // Expect an error that user cancelled the dialog. 257 {
303 ExtensionInstallPrompt::g_auto_confirm_for_tests = 258 // Expect an error that user cancelled the dialog.
304 ExtensionInstallPrompt::CANCEL; 259 ScopedTestDialogAutoConfirm auto_confirm(
305 SetEnabled(true, true, keys::kUserDidNotReEnableError); 260 ScopedTestDialogAutoConfirm::CANCEL);
261 SetEnabled(true, true, keys::kUserDidNotReEnableError);
262 }
306 263
307 // This should succeed when user accepts dialog. We must wait for the process 264 {
308 // to connect *and* for the channel to finish initializing before trying to 265 // This should succeed when user accepts dialog. We must wait for the
309 // crash it. (NOTIFICATION_RENDERER_PROCESS_CREATED does not wait for the 266 // process to connect *and* for the channel to finish initializing before
310 // latter and can cause KillProcess to fail on Windows.) 267 // trying to crash it. (NOTIFICATION_RENDERER_PROCESS_CREATED does not wait
311 content::WindowedNotificationObserver observer( 268 // for the latter and can cause KillProcess to fail on Windows.)
312 extensions::NOTIFICATION_EXTENSION_HOST_CREATED, 269 content::WindowedNotificationObserver observer(
313 content::NotificationService::AllSources()); 270 extensions::NOTIFICATION_EXTENSION_HOST_CREATED,
314 ExtensionInstallPrompt::g_auto_confirm_for_tests = 271 content::NotificationService::AllSources());
315 ExtensionInstallPrompt::ACCEPT; 272 ScopedTestDialogAutoConfirm auto_confirm(
316 SetEnabled(true, true, std::string()); 273 ScopedTestDialogAutoConfirm::ACCEPT);
317 observer.Wait(); 274 SetEnabled(true, true, std::string());
275 observer.Wait();
276 }
318 277
319 // Crash the extension. Mock a reload by disabling and then enabling. The 278 {
320 // extension should be reloaded and enabled. 279 // Crash the extension. Mock a reload by disabling and then enabling. The
321 ASSERT_TRUE(CrashEnabledExtension(kId)); 280 // extension should be reloaded and enabled.
322 SetEnabled(false, true, std::string()); 281 ScopedTestDialogAutoConfirm auto_confirm(
323 SetEnabled(true, true, std::string()); 282 ScopedTestDialogAutoConfirm::ACCEPT);
324 const Extension* extension = ExtensionSystem::Get(browser()->profile()) 283 ASSERT_TRUE(CrashEnabledExtension(kId));
325 ->extension_service()->GetExtensionById(kId, false); 284 SetEnabled(false, true, std::string());
326 EXPECT_TRUE(extension); 285 SetEnabled(true, true, std::string());
286 const Extension* extension = ExtensionSystem::Get(browser()->profile())
287 ->extension_service()
288 ->GetExtensionById(kId, false);
289 EXPECT_TRUE(extension);
290 }
327 } 291 }
328 292
329 } // namespace extensions 293 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/api/management/management_api_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698