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

Unified Diff: chrome/browser/extensions/api/file_system/file_system_api.cc

Issue 1032313002: Add a notification about auto-granted access to file systems. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed the string. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/file_system/file_system_api.cc
diff --git a/chrome/browser/extensions/api/file_system/file_system_api.cc b/chrome/browser/extensions/api/file_system/file_system_api.cc
index a35ff68f3f89ba507e337364c9acf248c85a4368..ba75f0d56363dee93df38b0147ba5fc638a8e832 100644
--- a/chrome/browser/extensions/api/file_system/file_system_api.cc
+++ b/chrome/browser/extensions/api/file_system/file_system_api.cc
@@ -67,6 +67,7 @@
#include "chrome/browser/chromeos/file_manager/app_id.h"
#include "chrome/browser/chromeos/file_manager/filesystem_api_util.h"
#include "chrome/browser/extensions/api/file_system/request_file_system_dialog_view.h"
+#include "chrome/browser/extensions/api/file_system/request_file_system_notification.h"
#include "chrome/browser/ui/simple_message_box.h"
#include "components/user_manager/user_manager.h"
#include "extensions/common/constants.h"
@@ -280,9 +281,10 @@ std::vector<base::FilePath> GetGrayListedDirectories() {
}
#if defined(OS_CHROMEOS)
-ConsentProvider::ConsentProvider(
- const UserConsentRequestCallback& user_consent_request_callback)
- : user_consent_request_callback_(user_consent_request_callback),
+ConsentProvider::ConsentProvider(const AskUserCallback& ask_user_callback,
+ const NotifyUserCallback& notify_user_callback)
+ : ask_user_callback_(ask_user_callback),
+ notify_user_callback_(notify_user_callback),
is_auto_launched_callback_(base::Bind(&ConsentProvider::IsAutoLaunched,
base::Unretained(this))) {
for (const auto& whitelisted_id : kRequestFileSystemComponentWhitelist)
@@ -311,19 +313,27 @@ void ConsentProvider::RequestConsent(
}
const bool is_auto_launched = is_auto_launched_callback_.Run(extension);
- const bool requires_consent =
- !is_auto_launched && extension.location() != Manifest::COMPONENT;
- if (!requires_consent) {
- // Grant the permission without showing the dialog.
+ if (extension.location() == Manifest::COMPONENT) {
+ // Grant the permission without showing the dialog or notification.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(callback, CONSENT_GRANTED));
- } else {
- DCHECK(!user_consent_request_callback_.is_null());
+ return;
+ } else if (is_auto_launched) {
+ // Grant the permission without showing the dialog, but with a notification.
+ DCHECK(!notify_user_callback_.is_null());
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(notify_user_callback_, volume_info, writable));
base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(user_consent_request_callback_, volume_info,
- writable, callback));
+ FROM_HERE, base::Bind(callback, CONSENT_GRANTED));
+ return;
}
+
+ // By default ask for user consent.
+ DCHECK(!ask_user_callback_.is_null());
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(ask_user_callback_, volume_info, writable, callback));
}
bool ConsentProvider::IsGrantable(const Extension& extension) {
@@ -1132,8 +1142,9 @@ bool FileSystemGetObservedEntriesFunction::RunSync() {
FileSystemRequestFileSystemFunction::FileSystemRequestFileSystemFunction()
: chrome_details_(this) {
#if defined(OS_CHROMEOS)
- consent_provider_.reset(new ConsentProvider(base::Bind(
- &FileSystemRequestFileSystemFunction::OnUserConsentRequested, this)));
+ consent_provider_.reset(new ConsentProvider(
+ base::Bind(&FileSystemRequestFileSystemFunction::OnAskUser, this),
+ base::Bind(&FileSystemRequestFileSystemFunction::OnNotifyUser, this)));
#endif
}
@@ -1210,7 +1221,7 @@ void FileSystemRequestFileSystemFunction::SetAutoDialogButtonForTesting(
FileSystemRequestFileSystemFunction::auto_dialog_button_for_testing_ = button;
}
-void FileSystemRequestFileSystemFunction::OnUserConsentRequested(
+void FileSystemRequestFileSystemFunction::OnAskUser(
const file_manager::VolumeInfo& volume_info,
bool writable,
const ConsentProvider::ConsentCallback& callback) {
@@ -1248,6 +1259,13 @@ void FileSystemRequestFileSystemFunction::OnUserConsentRequested(
callback));
}
+void FileSystemRequestFileSystemFunction::OnNotifyUser(
+ const file_manager::VolumeInfo& volume_info,
+ bool writable) {
+ RequestFileSystemNotification::ShowAutoGrantedNotification(
+ chrome_details_.GetProfile(), *extension(), volume_info, writable);
+}
+
void FileSystemRequestFileSystemFunction::OnUserConsentDialogClosed(
const ConsentProvider::ConsentCallback& callback,
ui::DialogButton result) {

Powered by Google App Engine
This is Rietveld 408576698