Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(855)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_mac_unittest.mm

Issue 9706012: Add abstractions that let embedders drive tests of WebContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove CONTENT_EXPORT on statically linked functions. Merge to head for commit. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h"
6 6
7 #include "base/mac/scoped_nsautorelease_pool.h" 7 #include "base/mac/scoped_nsautorelease_pool.h"
8 #include "content/browser/browser_thread_impl.h" 8 #include "content/browser/browser_thread_impl.h"
9 #include "content/browser/renderer_host/test_render_view_host.h" 9 #include "content/browser/renderer_host/test_render_view_host.h"
10 #include "content/common/gpu/gpu_messages.h" 10 #include "content/common/gpu/gpu_messages.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/base/test/cocoa_test_event_utils.h" 12 #include "ui/base/test/cocoa_test_event_utils.h"
13 #import "ui/base/test/ui_cocoa_test_helper.h" 13 #import "ui/base/test/ui_cocoa_test_helper.h"
14 #include "webkit/plugins/npapi/webplugin.h" 14 #include "webkit/plugins/npapi/webplugin.h"
15 15
16 using content::BrowserThread; 16 using content::BrowserThread;
17 using content::BrowserThreadImpl; 17 using content::BrowserThreadImpl;
18 using content::RenderViewHostImplTestHarness; 18 using content::RenderViewHostImplTestHarness;
19 19
20 class RenderWidgetHostViewMacTest : public RenderViewHostImplTestHarness { 20 class RenderWidgetHostViewMacTest : public RenderViewHostImplTestHarness {
21 public: 21 public:
22 RenderWidgetHostViewMacTest() : old_rwhv_(NULL), rwhv_mac_(NULL) {} 22 RenderWidgetHostViewMacTest() : old_rwhv_(NULL), rwhv_mac_(NULL) {}
23 23
24 virtual void SetUp() { 24 virtual void SetUp() {
25 RenderViewHostTestHarness::SetUp(); 25 RenderViewHostImplTestHarness::SetUp();
26 26
27 // TestRenderViewHost's destruction assumes that its view is a 27 // TestRenderViewHost's destruction assumes that its view is a
28 // TestRenderWidgetHostView, so store its view and reset it back to the 28 // TestRenderWidgetHostView, so store its view and reset it back to the
29 // stored view in |TearDown()|. 29 // stored view in |TearDown()|.
30 old_rwhv_ = rvh()->GetView(); 30 old_rwhv_ = rvh()->GetView();
31 31
32 // Owned by its |cocoa_view()|, i.e. |rwhv_cocoa_|. 32 // Owned by its |cocoa_view()|, i.e. |rwhv_cocoa_|.
33 rwhv_mac_ = static_cast<RenderWidgetHostViewMac*>( 33 rwhv_mac_ = static_cast<RenderWidgetHostViewMac*>(
34 content::RenderWidgetHostView::CreateViewForWidget(rvh())); 34 content::RenderWidgetHostView::CreateViewForWidget(rvh()));
35 rwhv_cocoa_.reset([rwhv_mac_->cocoa_view() retain]); 35 rwhv_cocoa_.reset([rwhv_mac_->cocoa_view() retain]);
36 } 36 }
37 virtual void TearDown() { 37 virtual void TearDown() {
38 // See comment in SetUp(). 38 // See comment in SetUp().
39 test_rvh()->SetView(old_rwhv_); 39 test_rvh()->SetView(old_rwhv_);
40 40
41 // Make sure the rwhv_mac_ is gone once the superclass's |TearDown()| runs. 41 // Make sure the rwhv_mac_ is gone once the superclass's |TearDown()| runs.
42 rwhv_cocoa_.reset(); 42 rwhv_cocoa_.reset();
43 pool_.Recycle(); 43 pool_.Recycle();
44 MessageLoop::current()->RunAllPending(); 44 MessageLoop::current()->RunAllPending();
45 pool_.Recycle(); 45 pool_.Recycle();
46 46
47 RenderViewHostTestHarness::TearDown(); 47 RenderViewHostImplTestHarness::TearDown();
48 } 48 }
49 protected: 49 protected:
50 // Adds an accelerated plugin view to |rwhv_cocoa_|. Returns a handle to the 50 // Adds an accelerated plugin view to |rwhv_cocoa_|. Returns a handle to the
51 // newly-added view. Callers must ensure that a UI thread is present and 51 // newly-added view. Callers must ensure that a UI thread is present and
52 // running before calling this function. 52 // running before calling this function.
53 gfx::PluginWindowHandle AddAcceleratedPluginView(int w, int h) { 53 gfx::PluginWindowHandle AddAcceleratedPluginView(int w, int h) {
54 // Create an accelerated view the size of the rhwvmac. 54 // Create an accelerated view the size of the rhwvmac.
55 [rwhv_cocoa_.get() setFrame:NSMakeRect(0, 0, w, h)]; 55 [rwhv_cocoa_.get() setFrame:NSMakeRect(0, 0, w, h)];
56 gfx::PluginWindowHandle accelerated_handle = 56 gfx::PluginWindowHandle accelerated_handle =
57 rwhv_mac_->AllocateFakePluginWindowHandle(/*opaque=*/false, 57 rwhv_mac_->AllocateFakePluginWindowHandle(/*opaque=*/false,
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 194
195 // A click on the accelerated view should focus the RWHVCocoa. 195 // A click on the accelerated view should focus the RWHVCocoa.
196 std::pair<NSEvent*, NSEvent*> clicks = 196 std::pair<NSEvent*, NSEvent*> clicks =
197 cocoa_test_event_utils::MouseClickInView(accelerated_view, 1); 197 cocoa_test_event_utils::MouseClickInView(accelerated_view, 1);
198 [rwhv_cocoa_.get() mouseDown:clicks.first]; 198 [rwhv_cocoa_.get() mouseDown:clicks.first];
199 EXPECT_EQ(rwhv_cocoa_.get(), [window firstResponder]); 199 EXPECT_EQ(rwhv_cocoa_.get(), [window firstResponder]);
200 200
201 // Clean up. 201 // Clean up.
202 rwhv_mac_->DestroyFakePluginWindowHandle(accelerated_handle); 202 rwhv_mac_->DestroyFakePluginWindowHandle(accelerated_handle);
203 } 203 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698