summaryrefslogtreecommitdiffstats
path: root/chrome/browser/file_select_helper.h
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 18:50:54 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-11 18:50:54 +0000
commitaaed25234a6000a0f35eda3c5c4b1e58d9a401de (patch)
treeba46f11711cde21dfdcdef395e9b50a88585d6e0 /chrome/browser/file_select_helper.h
parent6b7a5e329b36cbda1f8e432fbc92cc7acb5ede4c (diff)
downloadchromium_src-aaed25234a6000a0f35eda3c5c4b1e58d9a401de.zip
chromium_src-aaed25234a6000a0f35eda3c5c4b1e58d9a401de.tar.gz
chromium_src-aaed25234a6000a0f35eda3c5c4b1e58d9a401de.tar.bz2
Pull the file picker code out of TabContents.
BUG=71097 TEST=hammer on the HTML file selection dialogs. No visible change; no crashes, nothing. Review URL: http://codereview.chromium.org/6680002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77835 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/file_select_helper.h')
-rw-r--r--chrome/browser/file_select_helper.h47
1 files changed, 34 insertions, 13 deletions
diff --git a/chrome/browser/file_select_helper.h b/chrome/browser/file_select_helper.h
index 5a2b4d6..0aa29af 100644
--- a/chrome/browser/file_select_helper.h
+++ b/chrome/browser/file_select_helper.h
@@ -8,7 +8,9 @@
#include <vector>
+#include "base/compiler_specific.h"
#include "chrome/browser/ui/shell_dialogs.h"
+#include "content/browser/tab_contents/tab_contents_observer.h"
#include "content/common/notification_observer.h"
#include "content/common/notification_registrar.h"
#include "net/base/directory_lister.h"
@@ -25,26 +27,27 @@ class FileSelectHelper
explicit FileSelectHelper(Profile* profile);
~FileSelectHelper();
- // SelectFileDialog::Listener
- virtual void FileSelected(const FilePath& path, int index, void* params);
- virtual void MultiFilesSelected(const std::vector<FilePath>& files,
- void* params);
- virtual void FileSelectionCanceled(void* params);
-
- // net::DirectoryLister::DirectoryListerDelegate
- virtual void OnListFile(
- const net::DirectoryLister::DirectoryListerData& data);
- virtual void OnListDone(int error);
-
// Show the file chooser dialog.
void RunFileChooser(RenderViewHost* render_view_host,
const ViewHostMsg_RunFileChooser_Params& params);
private:
- // NotificationObserver implementation.
+ // SelectFileDialog::Listener overrides.
+ virtual void FileSelected(
+ const FilePath& path, int index, void* params) OVERRIDE;
+ virtual void MultiFilesSelected(const std::vector<FilePath>& files,
+ void* params) OVERRIDE;
+ virtual void FileSelectionCanceled(void* params) OVERRIDE;
+
+ // net::DirectoryLister::DirectoryListerDelegate overrides.
+ virtual void OnListFile(
+ const net::DirectoryLister::DirectoryListerData& data) OVERRIDE;
+ virtual void OnListDone(int error) OVERRIDE;
+
+ // NotificationObserver overrides.
virtual void Observe(NotificationType type,
const NotificationSource& source,
- const NotificationDetails& details);
+ const NotificationDetails& details) OVERRIDE;
// Helper method for handling the SelectFileDialog::Listener callbacks.
void DirectorySelected(const FilePath& path);
@@ -80,4 +83,22 @@ class FileSelectHelper
DISALLOW_COPY_AND_ASSIGN(FileSelectHelper);
};
+class FileSelectObserver : public TabContentsObserver {
+ public:
+ explicit FileSelectObserver(TabContents* tab_contents);
+ ~FileSelectObserver();
+
+ private:
+ // TabContentsObserver overrides.
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
+
+ // Called when a file selection is to be done.
+ void OnRunFileChooser(const ViewHostMsg_RunFileChooser_Params& params);
+
+ // FileSelectHelper, lazily created.
+ scoped_ptr<FileSelectHelper> file_select_helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(FileSelectObserver);
+};
+
#endif // CHROME_BROWSER_FILE_SELECT_HELPER_H_