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

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

Issue 8488012: Fix for management API related to escalated permissions disabled extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased again 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"
7 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/message_loop.h"
8 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 11 #include "base/values.h"
10 #include "chrome/common/extensions/extension.h" 12 #include "chrome/common/extensions/extension.h"
11 13
12 // A flag used for SetExtensionInstallDialogForManifestAutoConfirmForTests 14 namespace {
15
16 // A flag used for SetExtensionInstallDialogAutoConfirmForTests
13 enum AutoConfirmForTest { 17 enum AutoConfirmForTest {
14 DO_NOT_SKIP = 0, 18 DO_NOT_SKIP = 0,
15 PROCEED, 19 PROCEED,
16 ABORT 20 ABORT
17 }; 21 };
18 AutoConfirmForTest auto_confirm_for_tests = DO_NOT_SKIP; 22 AutoConfirmForTest auto_confirm_for_tests = DO_NOT_SKIP;
19 23
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
20 bool ShowExtensionInstallDialogForManifest( 55 bool ShowExtensionInstallDialogForManifest(
21 Profile *profile, 56 Profile *profile,
22 ExtensionInstallUI::Delegate* delegate, 57 ExtensionInstallUI::Delegate* delegate,
23 const DictionaryValue* manifest, 58 const DictionaryValue* manifest,
24 const std::string& id, 59 const std::string& id,
25 const std::string& localized_name, 60 const std::string& localized_name,
26 const std::string& localized_description, 61 const std::string& localized_description,
27 SkBitmap* icon, 62 SkBitmap* icon,
28 const ExtensionInstallUI::Prompt& prompt, 63 const ExtensionInstallUI::Prompt& prompt,
29 scoped_refptr<Extension>* dummy_extension) { 64 scoped_refptr<Extension>* dummy_extension) {
(...skipping 22 matching lines...) Expand all
52 return false; 87 return false;
53 } 88 }
54 89
55 if (icon->empty()) 90 if (icon->empty())
56 icon = const_cast<SkBitmap*>(&Extension::GetDefaultIcon( 91 icon = const_cast<SkBitmap*>(&Extension::GetDefaultIcon(
57 (*dummy_extension)->is_app())); 92 (*dummy_extension)->is_app()));
58 93
59 // In tests, we may have setup to proceed or abort without putting up the real 94 // In tests, we may have setup to proceed or abort without putting up the real
60 // confirmation dialog. 95 // confirmation dialog.
61 if (auto_confirm_for_tests != DO_NOT_SKIP) { 96 if (auto_confirm_for_tests != DO_NOT_SKIP) {
62 if (auto_confirm_for_tests == PROCEED) 97 DoAutoConfirm(delegate);
63 delegate->InstallUIProceed();
64 else
65 delegate->InstallUIAbort(true);
66 return true; 98 return true;
67 } 99 }
68 100
69 ExtensionInstallUI::Prompt filled_out_prompt = prompt; 101 ExtensionInstallUI::Prompt filled_out_prompt = prompt;
70 filled_out_prompt.SetPermissions( 102 filled_out_prompt.SetPermissions(
71 (*dummy_extension)->GetPermissionMessageStrings()); 103 (*dummy_extension)->GetPermissionMessageStrings());
72 104
73 ShowExtensionInstallDialog(profile, 105 ShowExtensionInstallDialog(profile,
74 delegate, 106 delegate,
75 dummy_extension->get(), 107 dummy_extension->get(),
76 icon, 108 icon,
77 filled_out_prompt); 109 filled_out_prompt);
78 return true; 110 return true;
79 } 111 }
80 112
81 void SetExtensionInstallDialogForManifestAutoConfirmForTests( 113 void SetExtensionInstallDialogAutoConfirmForTests(
82 bool should_proceed) { 114 bool should_proceed) {
83 auto_confirm_for_tests = should_proceed ? PROCEED : ABORT; 115 auto_confirm_for_tests = should_proceed ? PROCEED : ABORT;
84 } 116 }
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