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

Side by Side Diff: chrome/browser/extensions/extension_install_dialog.cc

Issue 8520035: Revert 110264 - Fix for management API related to escalated permissions disabled extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/extensions/extension_install_dialog.h" 5 #include "chrome/browser/extensions/extension_install_dialog.h"
6 6
7 #include "base/bind.h"
8 #include "base/file_path.h" 7 #include "base/file_path.h"
9 #include "base/message_loop.h"
10 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
11 #include "base/values.h" 9 #include "base/values.h"
12 #include "chrome/common/extensions/extension.h" 10 #include "chrome/common/extensions/extension.h"
13 11
14 namespace { 12 // A flag used for SetExtensionInstallDialogForManifestAutoConfirmForTests
15
16 // A flag used for SetExtensionInstallDialogAutoConfirmForTests
17 enum AutoConfirmForTest { 13 enum AutoConfirmForTest {
18 DO_NOT_SKIP = 0, 14 DO_NOT_SKIP = 0,
19 PROCEED, 15 PROCEED,
20 ABORT 16 ABORT
21 }; 17 };
22 AutoConfirmForTest auto_confirm_for_tests = DO_NOT_SKIP; 18 AutoConfirmForTest auto_confirm_for_tests = DO_NOT_SKIP;
23 19
24 void AutoConfirmTask(ExtensionInstallUI::Delegate* delegate, bool proceed) {
25 if (proceed)
26 delegate->InstallUIProceed();
27 else
28 delegate->InstallUIAbort(true);
29 }
30
31 void DoAutoConfirm(ExtensionInstallUI::Delegate* delegate) {
32 bool proceed = (auto_confirm_for_tests == PROCEED);
33 // We use PostTask instead of calling the delegate directly here, because in
34 // the real implementations it's highly likely the message loop will be
35 // pumping a few times before the user clicks accept or cancel.
36 MessageLoop::current()->PostTask(
37 FROM_HERE,
38 base::Bind(&AutoConfirmTask, delegate, proceed));
39 }
40
41 } // namespace
42
43 void ShowExtensionInstallDialog(Profile* profile,
44 ExtensionInstallUI::Delegate* delegate,
45 const Extension* extension,
46 SkBitmap* icon,
47 const ExtensionInstallUI::Prompt& prompt) {
48 if (auto_confirm_for_tests != DO_NOT_SKIP) {
49 DoAutoConfirm(delegate);
50 return;
51 }
52 ShowExtensionInstallDialogImpl(profile, delegate, extension, icon, prompt);
53 }
54
55 bool ShowExtensionInstallDialogForManifest( 20 bool ShowExtensionInstallDialogForManifest(
56 Profile *profile, 21 Profile *profile,
57 ExtensionInstallUI::Delegate* delegate, 22 ExtensionInstallUI::Delegate* delegate,
58 const DictionaryValue* manifest, 23 const DictionaryValue* manifest,
59 const std::string& id, 24 const std::string& id,
60 const std::string& localized_name, 25 const std::string& localized_name,
61 const std::string& localized_description, 26 const std::string& localized_description,
62 SkBitmap* icon, 27 SkBitmap* icon,
63 const ExtensionInstallUI::Prompt& prompt, 28 const ExtensionInstallUI::Prompt& prompt,
64 scoped_refptr<Extension>* dummy_extension) { 29 scoped_refptr<Extension>* dummy_extension) {
(...skipping 22 matching lines...) Expand all
87 return false; 52 return false;
88 } 53 }
89 54
90 if (icon->empty()) 55 if (icon->empty())
91 icon = const_cast<SkBitmap*>(&Extension::GetDefaultIcon( 56 icon = const_cast<SkBitmap*>(&Extension::GetDefaultIcon(
92 (*dummy_extension)->is_app())); 57 (*dummy_extension)->is_app()));
93 58
94 // In tests, we may have setup to proceed or abort without putting up the real 59 // In tests, we may have setup to proceed or abort without putting up the real
95 // confirmation dialog. 60 // confirmation dialog.
96 if (auto_confirm_for_tests != DO_NOT_SKIP) { 61 if (auto_confirm_for_tests != DO_NOT_SKIP) {
97 DoAutoConfirm(delegate); 62 if (auto_confirm_for_tests == PROCEED)
63 delegate->InstallUIProceed();
64 else
65 delegate->InstallUIAbort(true);
98 return true; 66 return true;
99 } 67 }
100 68
101 ExtensionInstallUI::Prompt filled_out_prompt = prompt; 69 ExtensionInstallUI::Prompt filled_out_prompt = prompt;
102 filled_out_prompt.SetPermissions( 70 filled_out_prompt.SetPermissions(
103 (*dummy_extension)->GetPermissionMessageStrings()); 71 (*dummy_extension)->GetPermissionMessageStrings());
104 72
105 ShowExtensionInstallDialog(profile, 73 ShowExtensionInstallDialog(profile,
106 delegate, 74 delegate,
107 dummy_extension->get(), 75 dummy_extension->get(),
108 icon, 76 icon,
109 filled_out_prompt); 77 filled_out_prompt);
110 return true; 78 return true;
111 } 79 }
112 80
113 void SetExtensionInstallDialogAutoConfirmForTests( 81 void SetExtensionInstallDialogForManifestAutoConfirmForTests(
114 bool should_proceed) { 82 bool should_proceed) {
115 auto_confirm_for_tests = should_proceed ? PROCEED : ABORT; 83 auto_confirm_for_tests = should_proceed ? PROCEED : ABORT;
116 } 84 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_install_dialog.h ('k') | chrome/browser/extensions/extension_management_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698