Chromium Code Reviews| Index: webkit/tools/test_shell/event_sending_controller.cc |
| =================================================================== |
| --- webkit/tools/test_shell/event_sending_controller.cc (revision 25255) |
| +++ webkit/tools/test_shell/event_sending_controller.cc (working copy) |
| @@ -26,12 +26,16 @@ |
| #include <queue> |
| #include "base/compiler_specific.h" |
| +#include "base/file_path.h" |
| +#include "base/file_util.h" |
| #include "base/logging.h" |
| #include "base/message_loop.h" |
| #include "base/string_util.h" |
| #include "base/time.h" |
| #include "webkit/api/public/WebDragData.h" |
| #include "webkit/api/public/WebPoint.h" |
| +#include "webkit/api/public/WebString.h" |
| +#include "webkit/glue/webkit_glue.h" |
| #include "webkit/glue/webview.h" |
| #include "webkit/tools/test_shell/test_shell.h" |
| @@ -51,6 +55,7 @@ |
| using WebKit::WebKeyboardEvent; |
| using WebKit::WebMouseEvent; |
| using WebKit::WebPoint; |
| +using WebKit::WebString; |
| TestShell* EventSendingController::shell_ = NULL; |
| gfx::Point EventSendingController::last_mouse_pos_; |
| @@ -168,6 +173,8 @@ |
| BindMethod("zoomPageOut", &EventSendingController::zoomPageOut); |
| BindMethod("scheduleAsynchronousClick", |
| &EventSendingController::scheduleAsynchronousClick); |
| + BindMethod("beginDragWithFiles", |
| + &EventSendingController::beginDragWithFiles); |
| // When set to true (the default value), we batch mouse move and mouse up |
| // events so we can simulate drag & drop. |
| @@ -597,6 +604,32 @@ |
| args, static_cast<CppVariant*>(NULL))); |
| } |
| +void EventSendingController::beginDragWithFiles( |
| + const CppArgumentList& args, CppVariant* result) { |
| + result->SetNull(); |
|
dglazkov
2009/09/03 02:51:40
I would put this at the end --not that it matters.
|
| + |
| + current_drag_data.initialize(); |
| + std::vector<std::wstring> files = args[0].ToStringVector(); |
| + for (size_t i = 0; i < files.size(); ++i) { |
| + FilePath file_path = FilePath::FromWStringHack(files[i]); |
| + file_util::AbsolutePath(&file_path); |
| + current_drag_data.appendToFileNames( |
| + webkit_glue::FilePathStringToWebString(file_path.value())); |
| + } |
| + |
| + // Provide a drag source. |
| + WebPoint client_point(last_mouse_pos_.x(), last_mouse_pos_.y()); |
| + WebPoint screen_point(last_mouse_pos_.x(), last_mouse_pos_.y()); |
| + webview()->DragTargetDragEnter(current_drag_data, 0, |
| + client_point, screen_point); |
| + |
| + // dragMode saves events and then replays them later. We don't need/want that. |
| + dragMode.Set(false); |
| + |
| + // Make the rest of eventSender think a drag is in progress. |
| + pressed_button_ = WebMouseEvent::ButtonLeft; |
| +} |
| + |
| // |
| // Unimplemented stubs |
| // |