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

Unified Diff: chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc

Issue 2332483002: [CUPS] Implement the CUPS printer PPD file picker in the manufacturer and model dialog. (Closed)
Patch Set: Fix the failed closure_compilation trybot. Created 4 years, 3 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/chromeos/cups_printers_handler.cc
diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
index d2965906e7c498d48e13ef9c4424137d87f9d2d0..c75b3904682ee051f4901f245c479daa55600dee 100644
--- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
@@ -11,7 +11,12 @@
#include "base/strings/string_util.h"
#include "base/values.h"
#include "chrome/browser/chromeos/printing/printer_pref_manager_factory.h"
+#include "chrome/browser/download/download_prefs.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_window.h"
+#include "chrome/browser/ui/chrome_select_file_policy.h"
+#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_ui.h"
#include "printing/backend/print_backend.h"
@@ -38,6 +43,9 @@ void CupsPrintersHandler::RegisterMessages() {
"removeCupsPrinter",
base::Bind(&CupsPrintersHandler::HandleRemoveCupsPrinter,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "selectPPDFile", base::Bind(&CupsPrintersHandler::HandleSelectPPDFile,
+ base::Unretained(this)));
}
void CupsPrintersHandler::HandleGetCupsPrintersList(
@@ -109,5 +117,32 @@ void CupsPrintersHandler::HandleRemoveCupsPrinter(const base::ListValue* args) {
printer_id);
}
+void CupsPrintersHandler::HandleSelectPPDFile(const base::ListValue* args) {
+ CHECK_EQ(1U, args->GetSize());
+ CHECK(args->GetString(0, &webui_callback_id_));
+
+ base::FilePath downloads_path = DownloadPrefs::FromDownloadManager(
+ content::BrowserContext::GetDownloadManager(profile_))->DownloadPath();
+
+ select_file_dialog_ = ui::SelectFileDialog::Create(
+ this, new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
+ gfx::NativeWindow owning_window =
+ chrome::FindBrowserWithWebContents(web_ui()->GetWebContents())
+ ->window()
+ ->GetNativeWindow();
+ select_file_dialog_->SelectFile(
+ ui::SelectFileDialog::SELECT_OPEN_FILE, base::string16(), downloads_path,
+ nullptr, 0, FILE_PATH_LITERAL(""), owning_window, nullptr);
+}
+
+void CupsPrintersHandler::FileSelected(const base::FilePath& path,
+ int index,
+ void* params) {
+ DCHECK(!webui_callback_id_.empty());
+ ResolveJavascriptCallback(base::StringValue(webui_callback_id_),
+ base::StringValue(path.value()));
+ webui_callback_id_.clear();
+}
+
} // namespace settings
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698