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

Side by Side Diff: ppapi/tests/test_fullscreen.cc

Issue 9937001: PPAPI: Refactor ppapi test callbacks to ease testing blocking callbacks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 years, 8 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
« no previous file with comments | « ppapi/tests/test_fullscreen.h ('k') | ppapi/tests/test_network_monitor_private.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ppapi/tests/test_fullscreen.h" 5 #include "ppapi/tests/test_fullscreen.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <string.h> 8 #include <string.h>
9 #include <string> 9 #include <string>
10 10
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 49
50 } // namespace 50 } // namespace
51 51
52 TestFullscreen::TestFullscreen(TestingInstance* instance) 52 TestFullscreen::TestFullscreen(TestingInstance* instance)
53 : TestCase(instance), 53 : TestCase(instance),
54 error_(), 54 error_(),
55 screen_mode_(instance), 55 screen_mode_(instance),
56 painted_color_(0), 56 painted_color_(0),
57 fullscreen_pending_(false), 57 fullscreen_pending_(false),
58 normal_pending_(false), 58 normal_pending_(false),
59 set_fullscreen_true_callback_(instance->pp_instance()), 59 fullscreen_event_(instance->pp_instance()),
60 fullscreen_callback_(instance->pp_instance()), 60 normal_event_(instance->pp_instance()) {
61 normal_callback_(instance->pp_instance()) {
62 screen_mode_.GetScreenSize(&screen_size_); 61 screen_mode_.GetScreenSize(&screen_size_);
63 } 62 }
64 63
65 bool TestFullscreen::Init() { 64 bool TestFullscreen::Init() {
66 if (screen_size_.IsEmpty()) { 65 if (screen_size_.IsEmpty()) {
67 instance_->AppendError("Failed to initialize screen_size_"); 66 instance_->AppendError("Failed to initialize screen_size_");
68 return false; 67 return false;
69 } 68 }
70 graphics2d_ = pp::Graphics2D(instance_, screen_size_, true); 69 graphics2d_ = pp::Graphics2D(instance_, screen_size_, true);
71 if (!instance_->BindGraphics(graphics2d_)) { 70 if (!instance_->BindGraphics(graphics2d_)) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 107
109 // 1. Switch to fullscreen. 108 // 1. Switch to fullscreen.
110 // This is only allowed within a context of a user gesture (e.g. mouse click). 109 // This is only allowed within a context of a user gesture (e.g. mouse click).
111 if (screen_mode_.SetFullscreen(true)) 110 if (screen_mode_.SetFullscreen(true))
112 return ReportError("SetFullscreen(true) outside of user gesture", true); 111 return ReportError("SetFullscreen(true) outside of user gesture", true);
113 // Trigger another call to SetFullscreen(true) from HandleInputEvent(). 112 // Trigger another call to SetFullscreen(true) from HandleInputEvent().
114 // The transition is asynchronous and ends at the next DidChangeView(). 113 // The transition is asynchronous and ends at the next DidChangeView().
115 instance_->RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE); 114 instance_->RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE);
116 SimulateUserGesture(); 115 SimulateUserGesture();
117 // DidChangeView() will call the callback once in fullscreen mode. 116 // DidChangeView() will call the callback once in fullscreen mode.
118 fullscreen_callback_.WaitForResult(); 117 fullscreen_event_.Wait();
119 if (GotError()) 118 if (GotError())
120 return Error(); 119 return Error();
121 if (fullscreen_pending_) 120 if (fullscreen_pending_)
122 return "fullscreen_pending_ has not been reset"; 121 return "fullscreen_pending_ has not been reset";
123 if (!screen_mode_.IsFullscreen()) 122 if (!screen_mode_.IsFullscreen())
124 return ReportError("IsFullscreen() in fullscreen", false); 123 return ReportError("IsFullscreen() in fullscreen", false);
125 124
126 // 2. Stay in fullscreen. No change. 125 // 2. Stay in fullscreen. No change.
127 if (screen_mode_.SetFullscreen(true)) 126 if (screen_mode_.SetFullscreen(true))
128 return ReportError("SetFullscreen(true) in fullscreen", true); 127 return ReportError("SetFullscreen(true) in fullscreen", true);
129 if (!screen_mode_.IsFullscreen()) 128 if (!screen_mode_.IsFullscreen())
130 return ReportError("IsFullscreen() in fullscreen^2", false); 129 return ReportError("IsFullscreen() in fullscreen^2", false);
131 130
132 // 3. Switch to normal. 131 // 3. Switch to normal.
133 // The transition is asynchronous and ends at DidChangeView(). 132 // The transition is asynchronous and ends at DidChangeView().
134 // No graphics devices can be bound while in transition. 133 // No graphics devices can be bound while in transition.
135 normal_pending_ = true; 134 normal_pending_ = true;
136 if (!screen_mode_.SetFullscreen(false)) 135 if (!screen_mode_.SetFullscreen(false))
137 return ReportError("SetFullscreen(false) in fullscreen", false); 136 return ReportError("SetFullscreen(false) in fullscreen", false);
138 // DidChangeView() will call the callback once out of fullscreen mode. 137 // DidChangeView() will signal once out of fullscreen mode.
139 normal_callback_.WaitForResult(); 138 normal_event_.Wait();
140 if (GotError()) 139 if (GotError())
141 return Error(); 140 return Error();
142 if (normal_pending_) 141 if (normal_pending_)
143 return "normal_pending_ has not been reset"; 142 return "normal_pending_ has not been reset";
144 if (screen_mode_.IsFullscreen()) 143 if (screen_mode_.IsFullscreen())
145 return ReportError("IsFullscreen() in normal", true); 144 return ReportError("IsFullscreen() in normal", true);
146 145
147 // 4. Stay in normal. No change. 146 // 4. Stay in normal. No change.
148 if (screen_mode_.SetFullscreen(false)) 147 if (screen_mode_.SetFullscreen(false))
149 return ReportError("SetFullscreen(false) in normal", true); 148 return ReportError("SetFullscreen(false) in normal", true);
(...skipping 17 matching lines...) Expand all
167 plugin_center, 166 plugin_center,
168 1, // click_count 167 1, // click_count
169 mouse_movement); 168 mouse_movement);
170 169
171 testing_interface_->SimulateInputEvent(instance_->pp_instance(), 170 testing_interface_->SimulateInputEvent(instance_->pp_instance(),
172 input_event.pp_resource()); 171 input_event.pp_resource());
173 } 172 }
174 173
175 void TestFullscreen::FailFullscreenTest(const std::string& error) { 174 void TestFullscreen::FailFullscreenTest(const std::string& error) {
176 error_ = error; 175 error_ = error;
177 pp::Module::Get()->core()->CallOnMainThread(0, fullscreen_callback_); 176 fullscreen_event_.Signal();
178 } 177 }
179 178
180 void TestFullscreen::FailNormalTest(const std::string& error) { 179 void TestFullscreen::FailNormalTest(const std::string& error) {
181 error_ = error; 180 error_ = error;
182 pp::Module::Get()->core()->CallOnMainThread(0, normal_callback_); 181 normal_event_.Signal();
183 } 182 }
184 183
185 void TestFullscreen::PassFullscreenTest() { 184 void TestFullscreen::PassFullscreenTest() {
186 pp::Module::Get()->core()->CallOnMainThread(0, fullscreen_callback_); 185 fullscreen_event_.Signal();
187 } 186 }
188 187
189 void TestFullscreen::PassNormalTest() { 188 void TestFullscreen::PassNormalTest() {
190 pp::Module::Get()->core()->CallOnMainThread(0, normal_callback_); 189 normal_event_.Signal();
191 } 190 }
192 191
193 // Transition to fullscreen can only happen when processing a user gesture. 192 // Transition to fullscreen can only happen when processing a user gesture.
194 bool TestFullscreen::HandleInputEvent(const pp::InputEvent& event) { 193 bool TestFullscreen::HandleInputEvent(const pp::InputEvent& event) {
195 // We only let mouse events through and only mouse clicks count. 194 // We only let mouse events through and only mouse clicks count.
196 if (event.GetType() != PP_INPUTEVENT_TYPE_MOUSEDOWN && 195 if (event.GetType() != PP_INPUTEVENT_TYPE_MOUSEDOWN &&
197 event.GetType() != PP_INPUTEVENT_TYPE_MOUSEUP) 196 event.GetType() != PP_INPUTEVENT_TYPE_MOUSEUP)
198 return false; 197 return false;
199 // We got the gesture. No need to handle any more events. 198 // We got the gesture. No need to handle any more events.
200 instance_->ClearInputEventRequest(PP_INPUTEVENT_CLASS_MOUSE); 199 instance_->ClearInputEventRequest(PP_INPUTEVENT_CLASS_MOUSE);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 } else if (normal_pending_ && !is_fullscreen) { 296 } else if (normal_pending_ && !is_fullscreen) {
298 normal_pending_ = false; 297 normal_pending_ = false;
299 if (screen_mode_.IsFullscreen()) 298 if (screen_mode_.IsFullscreen())
300 FailNormalTest("DidChangeview is in fullscreen"); 299 FailNormalTest("DidChangeview is in fullscreen");
301 else if (!instance_->BindGraphics(graphics2d_)) 300 else if (!instance_->BindGraphics(graphics2d_))
302 FailNormalTest("Failed to BindGraphics() in normal"); 301 FailNormalTest("Failed to BindGraphics() in normal");
303 else if (!PaintPlugin(position.size(), kSheerBlue)) 302 else if (!PaintPlugin(position.size(), kSheerBlue))
304 FailNormalTest("Failed to paint plugin image in normal"); 303 FailNormalTest("Failed to paint plugin image in normal");
305 } 304 }
306 } 305 }
OLDNEW
« no previous file with comments | « ppapi/tests/test_fullscreen.h ('k') | ppapi/tests/test_network_monitor_private.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698