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

Unified Diff: chrome/browser/ui/webui/settings/downloads_handler.cc

Issue 2711823002: MD Settings: Add "Auto Open" setting to Downloads C++ handler. (Closed)
Patch Set: fix teardown Created 3 years, 10 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/ui/webui/settings/downloads_handler.cc
diff --git a/chrome/browser/ui/webui/settings/downloads_handler.cc b/chrome/browser/ui/webui/settings/downloads_handler.cc
index cc4214147acb81a3c2d4e1a552facfdb0418c820..93e74d88de1e6f180bde4fd841719901994df021 100644
--- a/chrome/browser/ui/webui/settings/downloads_handler.cc
+++ b/chrome/browser/ui/webui/settings/downloads_handler.cc
@@ -12,6 +12,7 @@
#include "chrome/grit/generated_resources.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h"
+#include "content/public/browser/download_manager.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
@@ -21,8 +22,7 @@ using base::UserMetricsAction;
namespace settings {
-DownloadsHandler::DownloadsHandler() {
-}
+DownloadsHandler::DownloadsHandler(Profile* profile) : profile_(profile) {}
DownloadsHandler::~DownloadsHandler() {
// There may be pending file dialogs, we need to tell them that we've gone
@@ -33,14 +33,44 @@ DownloadsHandler::~DownloadsHandler() {
void DownloadsHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
+ "initializeDownloads",
+ base::Bind(&DownloadsHandler::HandleInitialize, base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
"selectDownloadLocation",
base::Bind(&DownloadsHandler::HandleSelectDownloadLocation,
base::Unretained(this)));
}
+void DownloadsHandler::OnJavascriptAllowed() {
+ pref_registrar_.Init(profile_->GetPrefs());
+ pref_registrar_.Add(
+ prefs::kDownloadExtensionsToOpen,
+ base::Bind(&DownloadsHandler::SendAutoOpenDownloadsToJavascript,
+ base::Unretained(this)));
+}
+
+void DownloadsHandler::OnJavascriptDisallowed() {
+ pref_registrar_.RemoveAll();
+}
+
+void DownloadsHandler::HandleInitialize(const base::ListValue* args) {
+ AllowJavascript();
+ SendAutoOpenDownloadsToJavascript();
+}
+
+void DownloadsHandler::SendAutoOpenDownloadsToJavascript() {
+ content::DownloadManager* manager =
+ content::BrowserContext::GetDownloadManager(profile_);
+ bool auto_open_downloads =
+ manager && DownloadPrefs::FromDownloadManager(manager)->IsAutoOpenUsed();
+ CallJavascriptFunction("cr.webUIListenerCallback",
+ base::StringValue("auto-open-downloads-changed"),
+ base::FundamentalValue(auto_open_downloads));
+}
+
void DownloadsHandler::HandleSelectDownloadLocation(
const base::ListValue* args) {
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
+ PrefService* pref_service = profile_->GetPrefs();
select_folder_dialog_ = ui::SelectFileDialog::Create(
this, new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
ui::SelectFileDialog::FileTypeInfo info;
@@ -57,7 +87,7 @@ void DownloadsHandler::FileSelected(const base::FilePath& path,
int index,
void* params) {
content::RecordAction(UserMetricsAction("Options_SetDownloadDirectory"));
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
+ PrefService* pref_service = profile_->GetPrefs();
pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, path);
pref_service->SetFilePath(prefs::kSaveFileDefaultDirectory, path);
}
« no previous file with comments | « chrome/browser/ui/webui/settings/downloads_handler.h ('k') | chrome/browser/ui/webui/settings/downloads_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698