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.cc | |
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.cc')
-rw-r--r-- | chrome/browser/file_select_helper.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc index 81616d5..1a38437 100644 --- a/chrome/browser/file_select_helper.cc +++ b/chrome/browser/file_select_helper.cc @@ -12,9 +12,11 @@ #include "base/utf_string_conversions.h" #include "chrome/browser/platform_util.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/common/render_messages.h" #include "chrome/common/render_messages_params.h" #include "content/browser/renderer_host/render_view_host.h" #include "content/browser/renderer_host/render_widget_host_view.h" +#include "content/browser/tab_contents/tab_contents.h" #include "content/common/notification_details.h" #include "content/common/notification_source.h" #include "grit/generated_resources.h" @@ -192,7 +194,7 @@ SelectFileDialog::FileTypeInfo* FileSelectHelper::GetFileTypesFromAcceptType( void FileSelectHelper::RunFileChooser( RenderViewHost* render_view_host, - const ViewHostMsg_RunFileChooser_Params ¶ms) { + const ViewHostMsg_RunFileChooser_Params& params) { DCHECK(!render_view_host_); render_view_host_ = render_view_host; notification_registrar_.RemoveAll(); @@ -245,3 +247,28 @@ void FileSelectHelper::Observe(NotificationType type, DCHECK(Details<RenderViewHost>(details).ptr() == render_view_host_); render_view_host_ = NULL; } + +FileSelectObserver::FileSelectObserver(TabContents* tab_contents) + : TabContentsObserver(tab_contents) { +} + +FileSelectObserver::~FileSelectObserver() { +} + +bool FileSelectObserver::OnMessageReceived(const IPC::Message& message) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(FileSelectObserver, message) + IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnRunFileChooser) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + + return handled; +} + +void FileSelectObserver::OnRunFileChooser( + const ViewHostMsg_RunFileChooser_Params& params) { + if (!file_select_helper_.get()) + file_select_helper_.reset(new FileSelectHelper(tab_contents()->profile())); + file_select_helper_->RunFileChooser(tab_contents()->render_view_host(), + params); +} |