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

Side by Side Diff: chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc

Issue 1008973002: [Extensions UI] Update extensions page to use api methods for permissions prompt (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/api/developer_private/show_permissions_dialo g_helper.h"
6
7 #include "apps/app_load_service.h"
8 #include "apps/saved_files_service.h"
9 #include "base/metrics/histogram.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/ui/apps/app_info_dialog.h"
12 #include "content/public/browser/web_contents.h"
13 #include "extensions/browser/api/device_permissions_manager.h"
14 #include "extensions/browser/extension_registry.h"
15 #include "extensions/common/extension.h"
16 #include "extensions/common/permissions/permissions_data.h"
17
18 namespace extensions {
19
20 ShowPermissionsDialogHelper::ShowPermissionsDialogHelper(
21 Profile* profile,
22 const base::Closure& on_complete)
23 : profile_(profile),
24 on_complete_(on_complete) {
25 }
26
27 ShowPermissionsDialogHelper::~ShowPermissionsDialogHelper() {
28 }
29
30 // static
31 void ShowPermissionsDialogHelper::Show(content::WebContents* web_contents,
32 content::BrowserContext* browser_context,
33 const Extension* extension,
34 bool from_extensions_page,
35 const base::Closure& on_complete) {
36 Profile* profile = Profile::FromBrowserContext(browser_context);
37
38 // Show the new-style extensions dialog when it is available. It is currently
39 // unavailable by default on Mac.
40 if (CanShowAppInfoDialog()) {
41 if (from_extensions_page) {
42 UMA_HISTOGRAM_ENUMERATION("Apps.AppInfoDialog.Launches",
43 AppInfoLaunchSource::FROM_EXTENSIONS_PAGE,
44 AppInfoLaunchSource::NUM_LAUNCH_SOURCES);
45 }
46
47 // The Unretained() is safe here because this object's parent should never
not at google - send to devlin 2015/03/16 17:39:55 I don't see an Unretained()
Devlin 2015/03/16 21:10:55 Done.
48 // go away before a response.
49 ShowAppInfoInNativeDialog(
50 web_contents->GetTopLevelNativeWindow(),
51 GetAppInfoNativeDialogSize(),
52 profile,
53 extension,
54 on_complete);
55
56 return; // All done.
57 }
58
59 // ShowPermissionsDialogHelper manages its own lifetime.
60 ShowPermissionsDialogHelper* helper =
61 new ShowPermissionsDialogHelper(profile, on_complete);
62 helper->ShowPermissionsDialog(web_contents, extension);
63 }
64
65 void ShowPermissionsDialogHelper::ShowPermissionsDialog(
66 content::WebContents* web_contents,
67 const Extension* extension) {
68 extension_id_ = extension->id();
69 prompt_.reset(new ExtensionInstallPrompt(web_contents));
70 std::vector<base::FilePath> retained_file_paths;
71 if (extension->permissions_data()->HasAPIPermission(
72 APIPermission::kFileSystem)) {
73 std::vector<apps::SavedFileEntry> retained_file_entries =
74 apps::SavedFilesService::Get(profile_)
75 ->GetAllFileEntries(extension_id_);
76 for (const apps::SavedFileEntry& entry : retained_file_entries)
77 retained_file_paths.push_back(entry.path);
78 }
79 std::vector<base::string16> retained_device_messages;
80 if (extension->permissions_data()->HasAPIPermission(APIPermission::kUsb)) {
81 retained_device_messages =
82 DevicePermissionsManager::Get(profile_)
83 ->GetPermissionMessageStrings(extension_id_);
84 }
85 prompt_->ReviewPermissions(
86 this, extension, retained_file_paths, retained_device_messages);
87 }
88
89 // This is called when the user clicks "Revoke File Access."
90 void ShowPermissionsDialogHelper::InstallUIProceed() {
91 const Extension* extension =
92 ExtensionRegistry::Get(profile_)->GetExtensionById(
93 extension_id_, ExtensionRegistry::EVERYTHING);
94
95 if (extension)
96 apps::SavedFilesService::Get(profile_)->ClearQueue(extension);
97 apps::AppLoadService::Get(profile_)
98 ->RestartApplicationIfRunning(extension_id_);
99
100 on_complete_.Run();
101
102 delete this;
103 }
104
105 void ShowPermissionsDialogHelper::InstallUIAbort(bool user_initiated) {
106 on_complete_.Run();
107
108 delete this;
109 }
110
111 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698