summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/render_view.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/render_view.h')
-rw-r--r--chrome/renderer/render_view.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index 5ef764c..c390a09 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -5,6 +5,7 @@
#ifndef CHROME_RENDERER_RENDER_VIEW_H_
#define CHROME_RENDERER_RENDER_VIEW_H_
+#include <deque>
#include <map>
#include <set>
#include <string>
@@ -507,6 +508,15 @@ class RenderView : public RenderWidget,
void AcceleratedSurfaceBuffersSwapped(gfx::PluginWindowHandle window);
#endif
+ // Adds the given file chooser request to the file_chooser_completion_ queue
+ // (see that var for more) and requests the chooser be displayed if there are
+ // no other waiting items in the queue.
+ //
+ // Returns true if the chooser was successfully scheduled. False means we
+ // didn't schedule anything.
+ bool ScheduleFileChooser(const ViewHostMsg_RunFileChooser_Params& params,
+ WebKit::WebFileChooserCompletion* completion);
+
protected:
// RenderWidget overrides:
virtual void Close();
@@ -697,7 +707,7 @@ class RenderView : public RenderWidget,
WebKit::WebDragOperation drag_operation);
void OnDragSourceSystemDragEnded();
void OnInstallMissingPlugin();
- void OnFileChooserResponse(const std::vector<FilePath>& file_names);
+ void OnFileChooserResponse(const std::vector<FilePath>& paths);
void OnEnableViewSourceMode();
void OnEnablePreferredSizeChangedMode();
void OnDisableScrollbarsForSmallWindows(
@@ -1009,9 +1019,12 @@ class RenderView : public RenderWidget,
// render views.
scoped_ptr<DevToolsClient> devtools_client_;
- // A pointer to a file chooser completion object. When not empty, file
- // choosing operation is underway.
- WebKit::WebFileChooserCompletion* file_chooser_completion_;
+ // The current and pending file chooser completion objects. If the queue is
+ // nonempty, the first item represents the currently running file chooser
+ // callback, and the remaining elements are the other file chooser completion
+ // still waiting to be run (in order).
+ struct PendingFileChooser;
+ std::deque< linked_ptr<PendingFileChooser> > file_chooser_completions_;
int history_list_offset_;
int history_list_length_;