diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 18:50:54 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 18:50:54 +0000 |
commit | aaed25234a6000a0f35eda3c5c4b1e58d9a401de (patch) | |
tree | ba46f11711cde21dfdcdef395e9b50a88585d6e0 /chrome/browser/file_select_helper.h | |
parent | 6b7a5e329b36cbda1f8e432fbc92cc7acb5ede4c (diff) | |
download | chromium_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.h | 47 |
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_ |