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

Side by Side Diff: chrome/browser/extensions/api/media_remoting/media_remoting_browser_test.cc

Issue 2724173002: Media Remoting: Add browser tests. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | chrome/browser/media/cast_remoting_connector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "base/location.h"
7 #include "base/test/test_timeouts.h"
8 #include "base/time/time.h"
9 #include "chrome/browser/extensions/extension_apitest.h"
10 #include "chrome/browser/extensions/tab_helper.h"
11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/tabs/tab_strip_model.h"
13 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h"
14 #include "chrome/browser/ui/tabs/tab_utils.h"
15 #include "chrome/common/chrome_features.h"
16 #include "chrome/common/chrome_switches.h"
17 #include "content/public/common/content_switches.h"
18 #include "content/public/test/browser_test_utils.h"
19 #include "content/public/test/test_utils.h"
20 #include "extensions/browser/extension_registry.h"
21 #include "extensions/common/switches.h"
22 #include "extensions/test/extension_test_message_listener.h"
23 #include "extensions/test/result_catcher.h"
24
25 namespace extensions {
26
27 namespace {
28
29 class MediaRemotingBrowserTest : public ExtensionApiTest {
30 public:
31 void SetUpCommandLine(base::CommandLine* command_line) override {
32 ExtensionApiTest::SetUpCommandLine(command_line);
33 command_line->AppendSwitchASCII(switches::kWhitelistedExtensionID,
34 "ddchlicdkolnonkihahngkmmmjnjlkkf");
35 command_line->AppendSwitchASCII(::switches::kEnableFeatures,
36 features::kMediaRemoting.name);
37 }
38
39 protected:
40 void SimulateMouseClickInCurrentTab() {
41 content::SimulateMouseClick(
42 browser()->tab_strip_model()->GetActiveWebContents(), 0,
43 blink::WebMouseEvent::Button::Left);
44 }
45 };
46
47 // Tests remoting starts successfully.
48 IN_PROC_BROWSER_TEST_F(MediaRemotingBrowserTest, StartRemoting) {
49 ExtensionTestMessageListener entered_fullscreen("entered_fullscreen", false);
50 ExtensionTestMessageListener start_remoting("start_remoting", false);
51 ExtensionTestMessageListener start_remoting_streams("start_remoting_streams",
52 false);
53 ExtensionTestMessageListener received_acquire_renderer(
54 "received_acquire_renderer", false);
55 ExtensionTestMessageListener received_renderer_initialize(
56 "received_renderer_initialize", false);
57 ExtensionTestMessageListener demuxer_stream_initialized(
58 "demuxer_stream_initialized", false);
59 ExtensionTestMessageListener received_startplayingfrom_rpc(
60 "received_startplayingfrom_rpc", false);
61
62 ASSERT_TRUE(RunExtensionSubtest("media_remoting", "start_remoting.html"))
63 << message_;
64
65 SimulateMouseClickInCurrentTab();
66 EXPECT_TRUE(entered_fullscreen.WaitUntilSatisfied());
67 // Remoting session starts when entering full screen.
68 EXPECT_TRUE(start_remoting.WaitUntilSatisfied());
69 EXPECT_TRUE(start_remoting_streams.WaitUntilSatisfied());
70 EXPECT_TRUE(received_acquire_renderer.WaitUntilSatisfied());
71 EXPECT_TRUE(received_renderer_initialize.WaitUntilSatisfied());
72 EXPECT_TRUE(demuxer_stream_initialized.WaitUntilSatisfied());
73 EXPECT_TRUE(received_startplayingfrom_rpc.WaitUntilSatisfied());
74 }
75
76 IN_PROC_BROWSER_TEST_F(MediaRemotingBrowserTest, RendererInitFail) {
77 ExtensionTestMessageListener entered_fullscreen("entered_fullscreen", false);
78 ExtensionTestMessageListener start_remoting("start_remoting", false);
79 ExtensionTestMessageListener start_remoting_streams("start_remoting_streams",
80 false);
81 ExtensionTestMessageListener received_acquire_renderer(
82 "received_acquire_renderer", false);
83 ExtensionTestMessageListener received_renderer_initialize(
84 "received_renderer_initialize", false);
85 ExtensionTestMessageListener demuxer_stream_initialized(
86 "demuxer_stream_initialized", false);
87 ExtensionTestMessageListener stop_remoting("stop_remoting", false);
88
89 ASSERT_TRUE(RunExtensionSubtest("media_remoting", "render_init_fail.html"))
90 << message_;
91
92 SimulateMouseClickInCurrentTab();
93 EXPECT_TRUE(entered_fullscreen.WaitUntilSatisfied());
94 // Remoting session starts when entering full screen.
95 EXPECT_TRUE(start_remoting.WaitUntilSatisfied());
96 EXPECT_TRUE(start_remoting_streams.WaitUntilSatisfied());
97 EXPECT_TRUE(received_acquire_renderer.WaitUntilSatisfied());
98 EXPECT_TRUE(received_renderer_initialize.WaitUntilSatisfied());
99 EXPECT_TRUE(demuxer_stream_initialized.WaitUntilSatisfied());
100 // Remoting session stops when initializing renderer fails.
101 EXPECT_TRUE(stop_remoting.WaitUntilSatisfied());
102
103 // Switch to local renderer without any pipeline error. Waiting for the end of
104 // video.
105 ResultCatcher catcher;
106 catcher.RestrictToBrowserContext(browser()->profile());
107 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
108 }
109
110 IN_PROC_BROWSER_TEST_F(MediaRemotingBrowserTest, ToggleRenderer) {
111 ExtensionTestMessageListener entered_fullscreen("entered_fullscreen", false);
112 ExtensionTestMessageListener start_remoting("start_remoting", false);
113 ExtensionTestMessageListener start_remoting_streams("start_remoting_streams",
114 false);
115 ExtensionTestMessageListener exited_fullscreen("exited_fullscreen", false);
116 ExtensionTestMessageListener stop_remoting("stop_remoting", false);
117
118 ASSERT_TRUE(RunExtensionSubtest("media_remoting", "toggle_renderer.html"))
119 << message_;
120
121 SimulateMouseClickInCurrentTab();
122 EXPECT_TRUE(entered_fullscreen.WaitUntilSatisfied());
123 // Remoting session starts when entering full screen.
124 EXPECT_TRUE(start_remoting.WaitUntilSatisfied());
125 EXPECT_TRUE(start_remoting_streams.WaitUntilSatisfied());
126
127 SimulateMouseClickInCurrentTab();
128 EXPECT_TRUE(exited_fullscreen.WaitUntilSatisfied());
129 // Remoting session stops after exiting full screen.
130 EXPECT_TRUE(stop_remoting.WaitUntilSatisfied());
131
132 // Switch to local renderer without any pipeline error. Waiting for the end of
133 // the video.
134 ResultCatcher catcher;
135 catcher.RestrictToBrowserContext(browser()->profile());
136 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
137 }
138
139 IN_PROC_BROWSER_TEST_F(MediaRemotingBrowserTest, RouteTerminate) {
140 ExtensionTestMessageListener entered_fullscreen("entered_fullscreen", false);
141 ExtensionTestMessageListener start_remoting("start_remoting", false);
142 ExtensionTestMessageListener start_remoting_streams("start_remoting_streams",
143 false);
144
145 ASSERT_TRUE(RunExtensionSubtest("media_remoting", "route_terminate.html"))
146 << message_;
147
148 SimulateMouseClickInCurrentTab();
149 EXPECT_TRUE(entered_fullscreen.WaitUntilSatisfied());
150 // Remoting session starts when entering full screen.
151 EXPECT_TRUE(start_remoting.WaitUntilSatisfied());
152 EXPECT_TRUE(start_remoting_streams.WaitUntilSatisfied());
153
154 // Remoting session will stop due to route terminate. Switch to local
155 // renderer without any pipeline error. Waiting for the end of the video.
156 ResultCatcher catcher;
157 catcher.RestrictToBrowserContext(browser()->profile());
158 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
159 }
160
161 } // namespace
162
163 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/media/cast_remoting_connector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698