| Index: content/shell/webkit_test_runner.cc | 
| diff --git a/content/shell/webkit_test_runner.cc b/content/shell/webkit_test_runner.cc | 
| index 9970b398bba6c1cf18748abb51da15f970dc99ca..9a617f2d05055952baaf743c59a035723c601943 100644 | 
| --- a/content/shell/webkit_test_runner.cc | 
| +++ b/content/shell/webkit_test_runner.cc | 
| @@ -6,32 +6,48 @@ | 
|  | 
| #include "base/md5.h" | 
| #include "base/memory/scoped_ptr.h" | 
| +#include "base/message_loop.h" | 
| #include "base/stringprintf.h" | 
| +#include "base/time.h" | 
| #include "content/public/renderer/render_view.h" | 
| #include "content/shell/shell_messages.h" | 
| +#include "content/shell/shell_render_process_observer.h" | 
| #include "skia/ext/platform_canvas.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebCString.h" | 
| +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebRect.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSize.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" | 
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebTestingSupport.h" | 
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" | 
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 
| +#include "third_party/WebKit/Tools/DumpRenderTree/chromium/TestRunner/public/WebTask.h" | 
| #include "webkit/glue/webkit_glue.h" | 
|  | 
| -using WebKit::WebFrame; | 
| +using WebKit::WebContextMenuData; | 
| using WebKit::WebElement; | 
| +using WebKit::WebFrame; | 
| +using WebKit::WebGamepads; | 
| using WebKit::WebRect; | 
| using WebKit::WebSize; | 
| -using WebKit::WebTestingSupport; | 
| +using WebKit::WebString; | 
| +using WebKit::WebVector; | 
| using WebKit::WebView; | 
| +using WebTestRunner::WebTask; | 
|  | 
| namespace content { | 
|  | 
| namespace { | 
|  | 
| +void InvokeTaskHelper(void* context) { | 
| +  WebTask* task = reinterpret_cast<WebTask*>(context); | 
| +  task->run(); | 
| +  delete task; | 
| +} | 
| + | 
| std::string DumpDocumentText(WebFrame* frame) { | 
| // We use the document element's text instead of the body text here because | 
| // not all documents have a body, such as XML documents. | 
| @@ -138,14 +154,88 @@ void CaptureSnapshot(WebView* view, SkBitmap* snapshot) { | 
| }  // namespace | 
|  | 
| WebKitTestRunner::WebKitTestRunner(RenderView* render_view) | 
| -    : RenderViewObserver(render_view) { | 
| +    : RenderViewObserver(render_view), | 
| +      is_main_window_(false) { | 
| } | 
|  | 
| WebKitTestRunner::~WebKitTestRunner() { | 
| +  if (is_main_window_) | 
| +    ShellRenderProcessObserver::GetInstance()->SetMainWindow(NULL, this); | 
| +} | 
| + | 
| +// WebTestDelegate  ----------------------------------------------------------- | 
| + | 
| +void WebKitTestRunner::clearContextMenuData() { | 
| +  last_context_menu_data_.reset(); | 
| +} | 
| + | 
| +WebContextMenuData* WebKitTestRunner::lastContextMenuData() const { | 
| +  return last_context_menu_data_.get(); | 
| +} | 
| + | 
| +void WebKitTestRunner::clearEditCommand() { | 
| +  render_view()->ClearEditCommands(); | 
| +} | 
| + | 
| +void WebKitTestRunner::setEditCommand(const std::string& name, | 
| +                                      const std::string& value) { | 
| +  render_view()->SetEditCommandForNextKeyEvent(name, value); | 
| +} | 
| + | 
| +void WebKitTestRunner::fillSpellingSuggestionList( | 
| +    const WebString& word, WebVector<WebString>* suggestions) { | 
| +  if (word == WebString::fromUTF8("wellcome")) { | 
| +      WebVector<WebString> result(suggestions->size() + 1); | 
| +      for (size_t i = 0; i < suggestions->size(); ++i) | 
| +        result[i] = (*suggestions)[i]; | 
| +      result[suggestions->size()] = WebString::fromUTF8("welcome"); | 
| +      suggestions->swap(result); | 
| +  } | 
| +} | 
| + | 
| +void WebKitTestRunner::setGamepadData(const WebGamepads& gamepads) { | 
| +  Send(new ShellViewHostMsg_NotImplemented( | 
| +      routing_id(), "WebTestDelegate", "setGamepadData")); | 
| } | 
|  | 
| +void WebKitTestRunner::printMessage(const std::string& message) { | 
| +  Send(new ShellViewHostMsg_PrintMessage(routing_id(), message)); | 
| +} | 
| + | 
| +void WebKitTestRunner::postTask(WebTask* task) { | 
| +  WebKit::webKitPlatformSupport()->callOnMainThread(InvokeTaskHelper, task); | 
| +} | 
| + | 
| +void WebKitTestRunner::postDelayedTask(WebTask* task, long long ms) { | 
| +  MessageLoop::current()->PostDelayedTask( | 
| +      FROM_HERE, | 
| +      base::Bind(&WebTask::run, base::Owned(task)), | 
| +      base::TimeDelta::FromMilliseconds(ms)); | 
| +} | 
| + | 
| +WebString WebKitTestRunner::registerIsolatedFileSystem( | 
| +    const WebKit::WebVector<WebKit::WebString>& absolute_filenames) { | 
| +  Send(new ShellViewHostMsg_NotImplemented( | 
| +      routing_id(), "WebTestDelegate", "registerIsolatedFileSystem")); | 
| +  return WebString(); | 
| +} | 
| + | 
| +long long WebKitTestRunner::getCurrentTimeInMillisecond() { | 
| +    return base::TimeTicks::Now().ToInternalValue() / | 
| +        base::Time::kMicrosecondsPerMillisecond; | 
| +} | 
| + | 
| +WebString WebKitTestRunner::getAbsoluteWebStringFromUTF8Path( | 
| +    const std::string& utf8_path) { | 
| +  Send(new ShellViewHostMsg_NotImplemented( | 
| +      routing_id(), "WebTestDelegate", "getAbsoluteWebStringFromUTF8Path")); | 
| +  return WebString(); | 
| +} | 
| + | 
| +// RenderViewObserver  -------------------------------------------------------- | 
| + | 
| void WebKitTestRunner::DidClearWindowObject(WebFrame* frame) { | 
| -  WebTestingSupport::injectInternalsObject(frame); | 
| +  ShellRenderProcessObserver::GetInstance()->BindTestRunnersToWindow(frame); | 
| } | 
|  | 
| void WebKitTestRunner::DidFinishLoad(WebFrame* frame) { | 
| @@ -153,17 +243,26 @@ void WebKitTestRunner::DidFinishLoad(WebFrame* frame) { | 
| Send(new ShellViewHostMsg_DidFinishLoad(routing_id())); | 
| } | 
|  | 
| +void WebKitTestRunner::DidRequestShowContextMenu( | 
| +    WebFrame* frame, | 
| +    const WebContextMenuData& data) { | 
| +  last_context_menu_data_.reset(new WebContextMenuData(data)); | 
| +} | 
| + | 
| bool WebKitTestRunner::OnMessageReceived(const IPC::Message& message) { | 
| bool handled = true; | 
| IPC_BEGIN_MESSAGE_MAP(WebKitTestRunner, message) | 
| IPC_MESSAGE_HANDLER(ShellViewMsg_CaptureTextDump, OnCaptureTextDump) | 
| IPC_MESSAGE_HANDLER(ShellViewMsg_CaptureImageDump, OnCaptureImageDump) | 
| +    IPC_MESSAGE_HANDLER(ShellViewMsg_SetIsMainWindow, OnSetIsMainWindow) | 
| IPC_MESSAGE_UNHANDLED(handled = false) | 
| IPC_END_MESSAGE_MAP() | 
|  | 
| return handled; | 
| } | 
|  | 
| +// Private methods  ----------------------------------------------------------- | 
| + | 
| void WebKitTestRunner::OnCaptureTextDump(bool as_text, | 
| bool printing, | 
| bool recursive) { | 
| @@ -217,4 +316,9 @@ void WebKitTestRunner::OnCaptureImageDump( | 
| routing_id(), actual_pixel_hash, snapshot)); | 
| } | 
|  | 
| +void WebKitTestRunner::OnSetIsMainWindow() { | 
| +  is_main_window_ = true; | 
| +  ShellRenderProcessObserver::GetInstance()->SetMainWindow(render_view(), this); | 
| +} | 
| + | 
| }  // namespace content | 
|  |