| Index: content/public/test/browser_test_utils.cc
|
| diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
|
| index 5beaa363675cf20374b662621f684746ce971859..0af7c636bc733af8f87b95e5a560e1bba92b43a1 100644
|
| --- a/content/public/test/browser_test_utils.cc
|
| +++ b/content/public/test/browser_test_utils.cc
|
| @@ -35,9 +35,17 @@
|
| #include "net/url_request/url_request_context_getter.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/compositor/test/draw_waiter_for_test.h"
|
| #include "ui/events/gestures/gesture_configuration.h"
|
| #include "ui/events/keycodes/dom4/keycode_converter.h"
|
|
|
| +#if defined(USE_AURA)
|
| +#include "ui/aura/test/window_event_dispatcher_test_api.h"
|
| +#include "ui/aura/window.h"
|
| +#include "ui/aura/window_event_dispatcher.h"
|
| +#include "ui/aura/window_tree_host.h"
|
| +#endif // USE_AURA
|
| +
|
| namespace content {
|
| namespace {
|
|
|
| @@ -203,14 +211,14 @@ GURL GetFileUrlWithQuery(const base::FilePath& path,
|
| }
|
|
|
| void WaitForLoadStop(WebContents* web_contents) {
|
| - WindowedNotificationObserver load_stop_observer(
|
| - NOTIFICATION_LOAD_STOP,
|
| - Source<NavigationController>(&web_contents->GetController()));
|
| // In many cases, the load may have finished before we get here. Only wait if
|
| // the tab still has a pending navigation.
|
| - if (!web_contents->IsLoading())
|
| - return;
|
| - load_stop_observer.Wait();
|
| + if (web_contents->IsLoading()) {
|
| + WindowedNotificationObserver load_stop_observer(
|
| + NOTIFICATION_LOAD_STOP,
|
| + Source<NavigationController>(&web_contents->GetController()));
|
| + load_stop_observer.Wait();
|
| + }
|
| }
|
|
|
| void CrashTab(WebContents* web_contents) {
|
| @@ -221,6 +229,32 @@ void CrashTab(WebContents* web_contents) {
|
| watcher.Wait();
|
| }
|
|
|
| +#if defined(USE_AURA)
|
| +bool IsResizeComplete(aura::test::WindowEventDispatcherTestApi* dispatcher_test,
|
| + RenderWidgetHostImpl* widget_host) {
|
| + return !dispatcher_test->HoldingPointerMoves() &&
|
| + !widget_host->resize_ack_pending_for_testing();
|
| +}
|
| +
|
| +void WaitForResizeComplete(WebContents* web_contents) {
|
| + aura::Window* content = web_contents->GetContentNativeView();
|
| + if (!content)
|
| + return;
|
| +
|
| + aura::WindowTreeHost* window_host = content->GetHost();
|
| + aura::WindowEventDispatcher* dispatcher = window_host->dispatcher();
|
| + aura::test::WindowEventDispatcherTestApi dispatcher_test(dispatcher);
|
| + RenderWidgetHostImpl* widget_host =
|
| + RenderWidgetHostImpl::From(web_contents->GetRenderViewHost());
|
| + if (!IsResizeComplete(&dispatcher_test, widget_host)) {
|
| + WindowedNotificationObserver resize_observer(
|
| + NOTIFICATION_RENDER_WIDGET_HOST_DID_UPDATE_BACKING_STORE,
|
| + base::Bind(IsResizeComplete, &dispatcher_test, widget_host));
|
| + resize_observer.Wait();
|
| + }
|
| +}
|
| +#endif // USE_AURA
|
| +
|
| void SimulateMouseClick(WebContents* web_contents,
|
| int modifiers,
|
| blink::WebMouseEvent::Button button) {
|
|
|