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

Unified Diff: ui/base/dialogs/select_file_dialog.cc

Issue 10698168: Part 3 of Move SelectFileDialog implementation to ui/base/dialogs/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More namespace to force rebuild. Created 8 years, 5 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
« no previous file with comments | « ui/base/dialogs/select_file_dialog.h ('k') | ui/base/dialogs/select_file_dialog_factory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/dialogs/select_file_dialog.cc
diff --git a/chrome/browser/ui/select_file_dialog.cc b/ui/base/dialogs/select_file_dialog.cc
similarity index 69%
rename from chrome/browser/ui/select_file_dialog.cc
rename to ui/base/dialogs/select_file_dialog.cc
index bd2ea9450f195f1adc86435aab5edbff6a35c1f7..7f0d6dd1d951fa63392697063778a96898915d82 100644
--- a/chrome/browser/ui/select_file_dialog.cc
+++ b/ui/base/dialogs/select_file_dialog.cc
@@ -2,23 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/select_file_dialog.h"
+#include "ui/base/dialogs/select_file_dialog.h"
#include "base/bind.h"
#include "base/logging.h"
#include "base/message_loop.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/infobars/infobar_tab_helper.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h"
-#include "chrome/browser/ui/tab_contents/tab_contents.h"
-#include "chrome/common/pref_names.h"
-#include "grit/generated_resources.h"
#include "ui/base/dialogs/selected_file_info.h"
+#include "ui/base/dialogs/select_file_dialog_factory.h"
#include "ui/base/dialogs/select_file_policy.h"
#include "ui/base/l10n/l10n_util.h"
-using content::WebContents;
+#if defined(OS_WIN)
+#include "ui/base/dialogs/select_file_dialog_win.h"
+#endif
+
+namespace {
+
+// Optional dialog factory. Leaked.
+ui::SelectFileDialogFactory* dialog_factory_ = NULL;
+
+} // namespace
+
+namespace ui {
SelectFileDialog::FileTypeInfo::FileTypeInfo() : include_all_files(false) {}
@@ -41,14 +46,36 @@ void SelectFileDialog::Listener::MultiFilesSelectedWithExtraInfo(
MultiFilesSelected(file_paths, params);
}
-SelectFileDialog::SelectFileDialog(Listener* listener,
- ui::SelectFilePolicy* policy)
- : listener_(listener),
- select_file_policy_(policy) {
- DCHECK(listener_);
+// static
+void SelectFileDialog::SetFactory(ui::SelectFileDialogFactory* factory) {
+ delete dialog_factory_;
+ dialog_factory_ = factory;
}
-SelectFileDialog::~SelectFileDialog() {}
+// TODO(erg): As each implementation moves into ui/base/dialogs, consolidate
+// the Create() methods into the following single method, which has to check
+// all options.
+#if defined(USE_AURA) || defined(OS_WIN)
+// static
+SelectFileDialog* SelectFileDialog::Create(Listener* listener,
+ ui::SelectFilePolicy* policy) {
+ if (dialog_factory_) {
+ SelectFileDialog* dialog = dialog_factory_->Create(listener, policy);
+ if (dialog)
+ return dialog;
+ }
+
+ // TODO(erg): Proxy to LinuxUI here.
+
+ // TODO(erg): Add other OSs one by one here.
+
+#if defined(OS_WIN) && !defined(USE_AURA)
+ return CreateWinSelectFileDialog(listener, policy);
+#endif
+
+ return NULL;
+}
+#endif
void SelectFileDialog::SelectFile(Type type,
const string16& title,
@@ -82,7 +109,18 @@ bool SelectFileDialog::HasMultipleFileTypeChoices() {
return HasMultipleFileTypeChoicesImpl();
}
+SelectFileDialog::SelectFileDialog(Listener* listener,
+ ui::SelectFilePolicy* policy)
+ : listener_(listener),
+ select_file_policy_(policy) {
+ DCHECK(listener_);
+}
+
+SelectFileDialog::~SelectFileDialog() {}
+
void SelectFileDialog::CancelFileSelection(void* params) {
if (listener_)
listener_->FileSelectionCanceled(params);
}
+
+} // namespace ui
« no previous file with comments | « ui/base/dialogs/select_file_dialog.h ('k') | ui/base/dialogs/select_file_dialog_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698