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

Side by Side Diff: chrome/browser/apps/guest_view/extension_view_browsertest.cc

Issue 873933002: Add <extensionview> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initial Created 5 years, 11 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 #include "chrome/browser/apps/app_browsertest_util.h" 6 #include "chrome/browser/apps/app_browsertest_util.h"
7 #include "content/public/browser/notification_service.h" 7 #include "chrome/test/base/ui_test_utils.h"
8 #include "content/public/browser/render_process_host.h"
9 #include "content/public/test/browser_test_utils.h" 8 #include "content/public/test/browser_test_utils.h"
10 #include "content/public/test/test_utils.h"
11 #include "extensions/browser/guest_view/guest_view_manager.h" 9 #include "extensions/browser/guest_view/guest_view_manager.h"
12 #include "extensions/browser/guest_view/guest_view_manager_factory.h" 10 #include "extensions/browser/guest_view/guest_view_manager_factory.h"
13 #include "extensions/common/switches.h"
14 #include "extensions/test/extension_test_message_listener.h" 11 #include "extensions/test/extension_test_message_listener.h"
15 #include "net/test/embedded_test_server/embedded_test_server.h"
16 #include "net/test/embedded_test_server/http_request.h"
17 #include "net/test/embedded_test_server/http_response.h"
18 12
19 namespace { 13 namespace {
20 14
21 class TestGuestViewManager : public extensions::GuestViewManager { 15 class TestGuestViewManager : public extensions::GuestViewManager {
22 public: 16 public:
23 explicit TestGuestViewManager(content::BrowserContext* context) : 17 explicit TestGuestViewManager(content::BrowserContext* context) :
24 extensions::GuestViewManager(context), 18 extensions::GuestViewManager(context),
25 web_contents_(NULL) {} 19 web_contents_(NULL) {}
26 20
27 content::WebContents* WaitForGuestCreated() { 21 content::WebContents* WaitForGuestCreated() {
28 if (web_contents_) 22 if (web_contents_)
29 return web_contents_; 23 return web_contents_;
30 24
31 message_loop_runner_ = new content::MessageLoopRunner; 25 message_loop_runner_ = new content::MessageLoopRunner;
32 message_loop_runner_->Run(); 26 message_loop_runner_->Run();
33 return web_contents_; 27 return web_contents_;
34 } 28 }
35 29
36 private: 30 private:
37 // GuestViewManager override: 31 // GuestViewManager override.
38 void AddGuest(int guest_instance_id, 32 void AddGuest(int guest_instance_id,
39 content::WebContents* guest_web_contents) override { 33 content::WebContents* guest_web_contents) override {
40 extensions::GuestViewManager::AddGuest( 34 extensions::GuestViewManager::AddGuest(guest_instance_id,
41 guest_instance_id, guest_web_contents); 35 guest_web_contents);
42 web_contents_ = guest_web_contents; 36 web_contents_ = guest_web_contents;
43 37
44 if (message_loop_runner_.get()) 38 if (message_loop_runner_.get())
45 message_loop_runner_->Quit(); 39 message_loop_runner_->Quit();
46 } 40 }
47 41
48 content::WebContents* web_contents_; 42 content::WebContents* web_contents_;
49 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; 43 scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
50 }; 44 };
51 45
52 // Test factory for creating test instances of GuestViewManager. 46 // Test factory for creating test instances of GuestViewManager.
53 class TestGuestViewManagerFactory : public extensions::GuestViewManagerFactory { 47 class TestGuestViewManagerFactory : public extensions::GuestViewManagerFactory {
54 public: 48 public:
55 TestGuestViewManagerFactory() : 49 TestGuestViewManagerFactory() : test_guest_view_manager_(NULL) {}
56 test_guest_view_manager_(NULL) {}
57 50
58 ~TestGuestViewManagerFactory() override {} 51 ~TestGuestViewManagerFactory() override {}
59 52
60 extensions::GuestViewManager* CreateGuestViewManager( 53 extensions::GuestViewManager* CreateGuestViewManager(
61 content::BrowserContext* context) override { 54 content::BrowserContext* context) override {
62 return GetManager(context); 55 return GetManager(context);
63 } 56 }
64 57
65 TestGuestViewManager* GetManager(content::BrowserContext* context) { 58 TestGuestViewManager* GetManager(content::BrowserContext* context) {
66 if (!test_guest_view_manager_) { 59 if (!test_guest_view_manager_) {
67 test_guest_view_manager_ = new TestGuestViewManager(context); 60 test_guest_view_manager_ = new TestGuestViewManager(context);
68 } 61 }
69 return test_guest_view_manager_; 62 return test_guest_view_manager_;
70 } 63 }
71 64
72 private: 65 private:
73 TestGuestViewManager* test_guest_view_manager_; 66 TestGuestViewManager* test_guest_view_manager_;
74 67
75 DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory); 68 DISALLOW_COPY_AND_ASSIGN(TestGuestViewManagerFactory);
76 }; 69 };
77 70
78 } // namespace 71 } // namespace
79 72
80 class AppViewTest : public extensions::PlatformAppBrowserTest { 73 class ExtensionViewTest : public extensions::PlatformAppBrowserTest {
81 public: 74 public:
82 AppViewTest() { 75 ExtensionViewTest() {
83 extensions::GuestViewManager::set_factory_for_testing(&factory_); 76 extensions::GuestViewManager::set_factory_for_testing(&factory_);
84 } 77 }
85 78
86 TestGuestViewManager* GetGuestViewManager() { 79 TestGuestViewManager* GetGuestViewManager() {
87 return factory_.GetManager(browser()->profile()); 80 return factory_.GetManager(browser()->profile());
88 } 81 }
89 82
90 enum TestServer {
91 NEEDS_TEST_SERVER,
92 NO_TEST_SERVER
93 };
94
95 void TestHelper(const std::string& test_name, 83 void TestHelper(const std::string& test_name,
96 const std::string& app_location, 84 const std::string& app_location,
97 const std::string& app_to_embed, 85 const std::string& app_to_embed) {
98 TestServer test_server) {
99 // For serving guest pages.
100 if (test_server == NEEDS_TEST_SERVER) {
101 if (!StartEmbeddedTestServer()) {
102 LOG(ERROR) << "FAILED TO START TEST SERVER.";
103 return;
104 }
105 }
106
107 LoadAndLaunchPlatformApp(app_location.c_str(), "Launched"); 86 LoadAndLaunchPlatformApp(app_location.c_str(), "Launched");
108 87
109 // Flush any pending events to make sure we start with a clean slate. 88 // Flush any pending events to make sure we start with a clean slate.
110 content::RunAllPendingInMessageLoop(); 89 content::RunAllPendingInMessageLoop();
111 90
112 content::WebContents* embedder_web_contents = 91 content::WebContents* embedder_web_contents =
113 GetFirstAppWindowWebContents(); 92 GetFirstAppWindowWebContents();
114 if (!embedder_web_contents) { 93 if (!embedder_web_contents) {
115 LOG(ERROR) << "UNABLE TO FIND EMBEDDER WEB CONTENTS."; 94 LOG(ERROR) << "UNABLE TO FIND EMBEDDER WEB CONTENTS.";
116 return; 95 return;
(...skipping 13 matching lines...) Expand all
130 } 109 }
131 110
132 private: 111 private:
133 void SetUpCommandLine(base::CommandLine* command_line) override { 112 void SetUpCommandLine(base::CommandLine* command_line) override {
134 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); 113 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line);
135 } 114 }
136 115
137 TestGuestViewManagerFactory factory_; 116 TestGuestViewManagerFactory factory_;
138 }; 117 };
139 118
140 // Tests that <appview> is able to navigate to another installed app. 119 // Tests that <extensionview> can be created and added to the DOM.
141 IN_PROC_BROWSER_TEST_F(AppViewTest, TestAppViewWithUndefinedDataShouldSucceed) { 120 IN_PROC_BROWSER_TEST_F(ExtensionViewTest,
121 TestExtensionViewCreationShouldSucceed) {
142 const extensions::Extension* skeleton_app = 122 const extensions::Extension* skeleton_app =
143 InstallPlatformApp("app_view/shim/skeleton"); 123 InstallPlatformApp("extension_view/shim/skeleton");
144 TestHelper("testAppViewWithUndefinedDataShouldSucceed", 124 TestHelper("testExtensionViewCreationShouldSucceed", "extension_view/shim",
145 "app_view/shim", 125 skeleton_app->id());
146 skeleton_app->id(),
147 NO_TEST_SERVER);
148 } 126 }
149 127
150 // Tests that <appview> correctly processes parameters passed on connect. 128 // Tests that verify that <extensionview> can navigate to different sources.
151 IN_PROC_BROWSER_TEST_F(AppViewTest, TestAppViewRefusedDataShouldFail) { 129 IN_PROC_BROWSER_TEST_F(ExtensionViewTest, ShimSrcAttribute) {
152 const extensions::Extension* skeleton_app = 130 ASSERT_TRUE(RunPlatformAppTest("platform_apps/extension_view/src_attribute"));
153 InstallPlatformApp("app_view/shim/skeleton");
154 TestHelper("testAppViewRefusedDataShouldFail",
155 "app_view/shim",
156 skeleton_app->id(),
157 NO_TEST_SERVER);
158 } 131 }
159
160 // Tests that <appview> correctly processes parameters passed on connect.
161 IN_PROC_BROWSER_TEST_F(AppViewTest, TestAppViewGoodDataShouldSucceed) {
162 const extensions::Extension* skeleton_app =
163 InstallPlatformApp("app_view/shim/skeleton");
164 TestHelper("testAppViewGoodDataShouldSucceed",
165 "app_view/shim",
166 skeleton_app->id(),
167 NO_TEST_SERVER);
168 }
169
170 // Tests that <appview> correctly handles multiple successive connects.
171 IN_PROC_BROWSER_TEST_F(AppViewTest, TestAppViewMultipleConnects) {
172 const extensions::Extension* skeleton_app =
173 InstallPlatformApp("app_view/shim/skeleton");
174 TestHelper("testAppViewMultipleConnects",
175 "app_view/shim",
176 skeleton_app->id(),
177 NO_TEST_SERVER);
178 }
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_tests.gypi » ('j') | extensions/browser/guest_view/extension_view/extension_view_guest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698