| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/shell/browser/shell_download_manager_delegate.h" | 5 #include "content/shell/browser/shell_download_manager_delegate.h" |
| 6 | 6 |
| 7 #if defined(TOOLKIT_GTK) | |
| 8 #include <gtk/gtk.h> | |
| 9 #endif | |
| 10 | |
| 11 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 12 #include <windows.h> | 8 #include <windows.h> |
| 13 #include <commdlg.h> | 9 #include <commdlg.h> |
| 14 #endif | 10 #endif |
| 15 | 11 |
| 16 #include "base/bind.h" | 12 #include "base/bind.h" |
| 17 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 18 #include "base/file_util.h" | 14 #include "base/file_util.h" |
| 19 #include "base/logging.h" | 15 #include "base/logging.h" |
| 20 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 std::wstring directory; | 179 std::wstring directory; |
| 184 if (!suggested_path.empty()) | 180 if (!suggested_path.empty()) |
| 185 directory = suggested_path.DirName().value(); | 181 directory = suggested_path.DirName().value(); |
| 186 | 182 |
| 187 save_as.lpstrInitialDir = directory.c_str(); | 183 save_as.lpstrInitialDir = directory.c_str(); |
| 188 save_as.Flags = OFN_OVERWRITEPROMPT | OFN_EXPLORER | OFN_ENABLESIZING | | 184 save_as.Flags = OFN_OVERWRITEPROMPT | OFN_EXPLORER | OFN_ENABLESIZING | |
| 189 OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST; | 185 OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST; |
| 190 | 186 |
| 191 if (GetSaveFileName(&save_as)) | 187 if (GetSaveFileName(&save_as)) |
| 192 result = base::FilePath(std::wstring(save_as.lpstrFile)); | 188 result = base::FilePath(std::wstring(save_as.lpstrFile)); |
| 193 #elif defined(TOOLKIT_GTK) | |
| 194 GtkWidget *dialog; | |
| 195 gfx::NativeWindow parent_window; | |
| 196 std::string base_name = base::FilePath(suggested_path).BaseName().value(); | |
| 197 | |
| 198 parent_window = item->GetWebContents()->GetView()->GetTopLevelNativeWindow(); | |
| 199 dialog = gtk_file_chooser_dialog_new("Save File", | |
| 200 parent_window, | |
| 201 GTK_FILE_CHOOSER_ACTION_SAVE, | |
| 202 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | |
| 203 GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, | |
| 204 NULL); | |
| 205 gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), | |
| 206 TRUE); | |
| 207 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), | |
| 208 base_name.c_str()); | |
| 209 | |
| 210 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { | |
| 211 char *filename; | |
| 212 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); | |
| 213 result = base::FilePath(filename); | |
| 214 g_free(filename); | |
| 215 } | |
| 216 gtk_widget_destroy(dialog); | |
| 217 #else | 189 #else |
| 218 NOTIMPLEMENTED(); | 190 NOTIMPLEMENTED(); |
| 219 #endif | 191 #endif |
| 220 | 192 |
| 221 callback.Run(result, DownloadItem::TARGET_DISPOSITION_PROMPT, | 193 callback.Run(result, DownloadItem::TARGET_DISPOSITION_PROMPT, |
| 222 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, result); | 194 DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, result); |
| 223 } | 195 } |
| 224 | 196 |
| 225 void ShellDownloadManagerDelegate::SetDownloadBehaviorForTesting( | 197 void ShellDownloadManagerDelegate::SetDownloadBehaviorForTesting( |
| 226 const base::FilePath& default_download_path) { | 198 const base::FilePath& default_download_path) { |
| 227 default_download_path_ = default_download_path; | 199 default_download_path_ = default_download_path; |
| 228 suppress_prompting_ = true; | 200 suppress_prompting_ = true; |
| 229 } | 201 } |
| 230 | 202 |
| 231 } // namespace content | 203 } // namespace content |
| OLD | NEW |