| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "apps/app_window.h" | 5 #include "apps/app_window.h" |
| 6 #include "apps/app_window_registry.h" | 6 #include "apps/app_window_registry.h" |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
| 10 #include "chrome/browser/apps/app_browsertest_util.h" | 10 #include "chrome/browser/apps/app_browsertest_util.h" |
| 11 #include "chrome/browser/chrome_content_browser_client.h" | 11 #include "chrome/browser/chrome_content_browser_client.h" |
| 12 #include "chrome/browser/extensions/extension_test_message_listener.h" | 12 #include "chrome/browser/extensions/extension_test_message_listener.h" |
| 13 #include "chrome/browser/guest_view/guest_view_base.h" | |
| 14 #include "chrome/browser/guest_view/guest_view_manager.h" | |
| 15 #include "chrome/browser/guest_view/guest_view_manager_factory.h" | |
| 16 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 17 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsert
est_util.h" | 14 #include "chrome/browser/renderer_context_menu/render_view_context_menu_browsert
est_util.h" |
| 18 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti
l.h" | 15 #include "chrome/browser/renderer_context_menu/render_view_context_menu_test_uti
l.h" |
| 19 #include "chrome/test/base/interactive_test_utils.h" | 16 #include "chrome/test/base/interactive_test_utils.h" |
| 20 #include "chrome/test/base/test_launcher_utils.h" | 17 #include "chrome/test/base/test_launcher_utils.h" |
| 21 #include "chrome/test/base/ui_test_utils.h" | 18 #include "chrome/test/base/ui_test_utils.h" |
| 22 #include "content/public/browser/notification_service.h" | 19 #include "content/public/browser/notification_service.h" |
| 23 #include "content/public/browser/render_process_host.h" | 20 #include "content/public/browser/render_process_host.h" |
| 24 #include "content/public/browser/render_view_host.h" | 21 #include "content/public/browser/render_view_host.h" |
| 25 #include "content/public/browser/render_widget_host_iterator.h" | 22 #include "content/public/browser/render_widget_host_iterator.h" |
| 26 #include "content/public/browser/render_widget_host_view.h" | 23 #include "content/public/browser/render_widget_host_view.h" |
| 27 #include "content/public/browser/web_contents.h" | 24 #include "content/public/browser/web_contents.h" |
| 28 #include "content/public/common/content_switches.h" | 25 #include "content/public/common/content_switches.h" |
| 29 #include "content/public/test/browser_test_utils.h" | 26 #include "content/public/test/browser_test_utils.h" |
| 27 #include "extensions/browser/guest_view/guest_view_base.h" |
| 28 #include "extensions/browser/guest_view/guest_view_manager.h" |
| 29 #include "extensions/browser/guest_view/guest_view_manager_factory.h" |
| 30 #include "net/test/embedded_test_server/embedded_test_server.h" | 30 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 31 #include "ui/base/ime/composition_text.h" | 31 #include "ui/base/ime/composition_text.h" |
| 32 #include "ui/base/ime/text_input_client.h" | 32 #include "ui/base/ime/text_input_client.h" |
| 33 #include "ui/base/test/ui_controls.h" | 33 #include "ui/base/test/ui_controls.h" |
| 34 #include "ui/events/keycodes/keyboard_codes.h" | 34 #include "ui/events/keycodes/keyboard_codes.h" |
| 35 | 35 |
| 36 using apps::AppWindow; | 36 using apps::AppWindow; |
| 37 | 37 |
| 38 class TestGuestViewManager : public GuestViewManager { | 38 class TestGuestViewManager : public extensions::GuestViewManager { |
| 39 public: | 39 public: |
| 40 explicit TestGuestViewManager(content::BrowserContext* context) : | 40 explicit TestGuestViewManager(content::BrowserContext* context) : |
| 41 GuestViewManager(context), | 41 GuestViewManager(context), |
| 42 web_contents_(NULL) {} | 42 web_contents_(NULL) {} |
| 43 | 43 |
| 44 content::WebContents* WaitForGuestCreated() { | 44 content::WebContents* WaitForGuestCreated() { |
| 45 if (web_contents_) | 45 if (web_contents_) |
| 46 return web_contents_; | 46 return web_contents_; |
| 47 | 47 |
| 48 message_loop_runner_ = new content::MessageLoopRunner; | 48 message_loop_runner_ = new content::MessageLoopRunner; |
| 49 message_loop_runner_->Run(); | 49 message_loop_runner_->Run(); |
| 50 return web_contents_; | 50 return web_contents_; |
| 51 } | 51 } |
| 52 | 52 |
| 53 private: | 53 private: |
| 54 // GuestViewManager override: | 54 // GuestViewManager override: |
| 55 virtual void AddGuest(int guest_instance_id, | 55 virtual void AddGuest(int guest_instance_id, |
| 56 content::WebContents* guest_web_contents) OVERRIDE{ | 56 content::WebContents* guest_web_contents) OVERRIDE{ |
| 57 GuestViewManager::AddGuest(guest_instance_id, guest_web_contents); | 57 extensions::GuestViewManager::AddGuest( |
| 58 guest_instance_id, guest_web_contents); |
| 58 web_contents_ = guest_web_contents; | 59 web_contents_ = guest_web_contents; |
| 59 | 60 |
| 60 if (message_loop_runner_) | 61 if (message_loop_runner_) |
| 61 message_loop_runner_->Quit(); | 62 message_loop_runner_->Quit(); |
| 62 } | 63 } |
| 63 | 64 |
| 64 content::WebContents* web_contents_; | 65 content::WebContents* web_contents_; |
| 65 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | 66 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| 66 }; | 67 }; |
| 67 | 68 |
| 68 // Test factory for creating test instances of GuestViewManager. | 69 // Test factory for creating test instances of GuestViewManager. |
| 69 class TestGuestViewManagerFactory : public GuestViewManagerFactory { | 70 class TestGuestViewManagerFactory : public extensions::GuestViewManagerFactory { |
| 70 public: | 71 public: |
| 71 TestGuestViewManagerFactory() : | 72 TestGuestViewManagerFactory() : |
| 72 test_guest_view_manager_(NULL) {} | 73 test_guest_view_manager_(NULL) {} |
| 73 | 74 |
| 74 virtual ~TestGuestViewManagerFactory() {} | 75 virtual ~TestGuestViewManagerFactory() {} |
| 75 | 76 |
| 76 virtual GuestViewManager* CreateGuestViewManager( | 77 virtual extensions::GuestViewManager* CreateGuestViewManager( |
| 77 content::BrowserContext* context) OVERRIDE { | 78 content::BrowserContext* context) OVERRIDE { |
| 78 return GetManager(context); | 79 return GetManager(context); |
| 79 } | 80 } |
| 80 | 81 |
| 81 TestGuestViewManager* GetManager(content::BrowserContext* context) { | 82 TestGuestViewManager* GetManager(content::BrowserContext* context) { |
| 82 if (!test_guest_view_manager_) { | 83 if (!test_guest_view_manager_) { |
| 83 test_guest_view_manager_ = new TestGuestViewManager(context); | 84 test_guest_view_manager_ = new TestGuestViewManager(context); |
| 84 } | 85 } |
| 85 return test_guest_view_manager_; | 86 return test_guest_view_manager_; |
| 86 } | 87 } |
| 87 | 88 |
| 88 private: | 89 private: |
| 89 TestGuestViewManager* test_guest_view_manager_; | 90 TestGuestViewManager* test_guest_view_manager_; |
| 90 | 91 |
| 91 DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory); | 92 DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory); |
| 92 }; | 93 }; |
| 93 | 94 |
| 94 class WebViewInteractiveTest | 95 class WebViewInteractiveTest |
| 95 : public extensions::PlatformAppBrowserTest { | 96 : public extensions::PlatformAppBrowserTest { |
| 96 public: | 97 public: |
| 97 WebViewInteractiveTest() | 98 WebViewInteractiveTest() |
| 98 : guest_web_contents_(NULL), | 99 : guest_web_contents_(NULL), |
| 99 embedder_web_contents_(NULL), | 100 embedder_web_contents_(NULL), |
| 100 corner_(gfx::Point()), | 101 corner_(gfx::Point()), |
| 101 mouse_click_result_(false), | 102 mouse_click_result_(false), |
| 102 first_click_(true) { | 103 first_click_(true) { |
| 103 GuestViewManager::set_factory_for_testing(&factory_); | 104 extensions::GuestViewManager::set_factory_for_testing(&factory_); |
| 104 } | 105 } |
| 105 | 106 |
| 106 TestGuestViewManager* GetGuestViewManager() { | 107 TestGuestViewManager* GetGuestViewManager() { |
| 107 return factory_.GetManager(browser()->profile()); | 108 return factory_.GetManager(browser()->profile()); |
| 108 } | 109 } |
| 109 | 110 |
| 110 void MoveMouseInsideWindowWithListener(gfx::Point point, | 111 void MoveMouseInsideWindowWithListener(gfx::Point point, |
| 111 const std::string& message) { | 112 const std::string& message) { |
| 112 ExtensionTestMessageListener move_listener(message, false); | 113 ExtensionTestMessageListener move_listener(message, false); |
| 113 ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( | 114 ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 LoadAndLaunchPlatformApp(app_name.c_str(), "connected"); | 280 LoadAndLaunchPlatformApp(app_name.c_str(), "connected"); |
| 280 | 281 |
| 281 guest_observer.Wait(); | 282 guest_observer.Wait(); |
| 282 content::Source<content::NavigationController> source = | 283 content::Source<content::NavigationController> source = |
| 283 guest_observer.source(); | 284 guest_observer.source(); |
| 284 EXPECT_TRUE(source->GetWebContents()->GetRenderProcessHost()-> | 285 EXPECT_TRUE(source->GetWebContents()->GetRenderProcessHost()-> |
| 285 IsIsolatedGuest()); | 286 IsIsolatedGuest()); |
| 286 | 287 |
| 287 guest_web_contents_ = source->GetWebContents(); | 288 guest_web_contents_ = source->GetWebContents(); |
| 288 embedder_web_contents_ = | 289 embedder_web_contents_ = |
| 289 GuestViewBase::FromWebContents(guest_web_contents_)-> | 290 extensions::GuestViewBase::FromWebContents(guest_web_contents_)-> |
| 290 embedder_web_contents(); | 291 embedder_web_contents(); |
| 291 | 292 |
| 292 gfx::Rect offset = embedder_web_contents_->GetContainerBounds(); | 293 gfx::Rect offset = embedder_web_contents_->GetContainerBounds(); |
| 293 corner_ = gfx::Point(offset.x(), offset.y()); | 294 corner_ = gfx::Point(offset.x(), offset.y()); |
| 294 | 295 |
| 295 const testing::TestInfo* const test_info = | 296 const testing::TestInfo* const test_info = |
| 296 testing::UnitTest::GetInstance()->current_test_info(); | 297 testing::UnitTest::GetInstance()->current_test_info(); |
| 297 const char* prefix = "DragDropWithinWebView"; | 298 const char* prefix = "DragDropWithinWebView"; |
| 298 if (!strncmp(test_info->name(), prefix, strlen(prefix))) { | 299 if (!strncmp(test_info->name(), prefix, strlen(prefix))) { |
| 299 // In the drag drop test we add 20px padding to the page body because on | 300 // In the drag drop test we add 20px padding to the page body because on |
| (...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 | 1080 |
| 1080 // Now verify that the selection text propagates properly to RWHV. | 1081 // Now verify that the selection text propagates properly to RWHV. |
| 1081 content::RenderWidgetHostView* guest_rwhv = | 1082 content::RenderWidgetHostView* guest_rwhv = |
| 1082 guest_web_contents()->GetRenderWidgetHostView(); | 1083 guest_web_contents()->GetRenderWidgetHostView(); |
| 1083 ASSERT_TRUE(guest_rwhv); | 1084 ASSERT_TRUE(guest_rwhv); |
| 1084 std::string selected_text = base::UTF16ToUTF8(guest_rwhv->GetSelectedText()); | 1085 std::string selected_text = base::UTF16ToUTF8(guest_rwhv->GetSelectedText()); |
| 1085 ASSERT_TRUE(selected_text.size() >= 10u); | 1086 ASSERT_TRUE(selected_text.size() >= 10u); |
| 1086 ASSERT_EQ("AAAAAAAAAA", selected_text.substr(0, 10)); | 1087 ASSERT_EQ("AAAAAAAAAA", selected_text.substr(0, 10)); |
| 1087 } | 1088 } |
| 1088 #endif | 1089 #endif |
| OLD | NEW |