| OLD | NEW |
| 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 "screen_orientation_dispatcher.h" | 5 #include "screen_orientation_dispatcher.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 public blink::WebLockOrientationCallback { | 27 public blink::WebLockOrientationCallback { |
| 28 public: | 28 public: |
| 29 struct LockOrientationResultHolder { | 29 struct LockOrientationResultHolder { |
| 30 LockOrientationResultHolder() | 30 LockOrientationResultHolder() |
| 31 : succeeded_(false), failed_(false) {} | 31 : succeeded_(false), failed_(false) {} |
| 32 | 32 |
| 33 bool succeeded_; | 33 bool succeeded_; |
| 34 bool failed_; | 34 bool failed_; |
| 35 unsigned angle_; | 35 unsigned angle_; |
| 36 blink::WebScreenOrientationType orientation_; | 36 blink::WebScreenOrientationType orientation_; |
| 37 blink::WebLockOrientationCallback::ErrorType error_; | 37 blink::WebLockOrientationError error_; |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 explicit MockLockOrientationCallback(LockOrientationResultHolder* results) | 40 explicit MockLockOrientationCallback(LockOrientationResultHolder* results) |
| 41 : results_(results) {} | 41 : results_(results) {} |
| 42 | 42 |
| 43 virtual void onSuccess(unsigned angle, | 43 virtual void onSuccess(unsigned angle, |
| 44 blink::WebScreenOrientationType orientation) { | 44 blink::WebScreenOrientationType orientation) { |
| 45 results_->succeeded_ = true; | 45 results_->succeeded_ = true; |
| 46 results_->angle_ = angle; | 46 results_->angle_ = angle; |
| 47 results_->orientation_ = orientation; | 47 results_->orientation_ = orientation; |
| 48 } | 48 } |
| 49 | 49 |
| 50 virtual void onError( | 50 virtual void onError(blink::WebLockOrientationError error) { |
| 51 blink::WebLockOrientationCallback::ErrorType error) { | |
| 52 results_->failed_ = true; | 51 results_->failed_ = true; |
| 53 results_->error_ = error; | 52 results_->error_ = error; |
| 54 } | 53 } |
| 55 | 54 |
| 56 private: | 55 private: |
| 57 virtual ~MockLockOrientationCallback() {} | 56 virtual ~MockLockOrientationCallback() {} |
| 58 | 57 |
| 59 LockOrientationResultHolder* results_; | 58 LockOrientationResultHolder* results_; |
| 60 }; | 59 }; |
| 61 | 60 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 // Test that calling lockOrientation() followed by unlockOrientation() cancel | 116 // Test that calling lockOrientation() followed by unlockOrientation() cancel |
| 118 // the lockOrientation(). | 117 // the lockOrientation(). |
| 119 TEST_F(ScreenOrientationDispatcherTest, CancelPending_Unlocking) { | 118 TEST_F(ScreenOrientationDispatcherTest, CancelPending_Unlocking) { |
| 120 MockLockOrientationCallback::LockOrientationResultHolder callback_results; | 119 MockLockOrientationCallback::LockOrientationResultHolder callback_results; |
| 121 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, | 120 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, |
| 122 new MockLockOrientationCallback(&callback_results)); | 121 new MockLockOrientationCallback(&callback_results)); |
| 123 UnlockOrientation(); | 122 UnlockOrientation(); |
| 124 | 123 |
| 125 EXPECT_FALSE(callback_results.succeeded_); | 124 EXPECT_FALSE(callback_results.succeeded_); |
| 126 EXPECT_TRUE(callback_results.failed_); | 125 EXPECT_TRUE(callback_results.failed_); |
| 127 EXPECT_EQ(blink::WebLockOrientationCallback::ErrorTypeCanceled, | 126 EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results.error_); |
| 128 callback_results.error_); | |
| 129 } | 127 } |
| 130 | 128 |
| 131 // Test that calling lockOrientation() twice cancel the first lockOrientation(). | 129 // Test that calling lockOrientation() twice cancel the first lockOrientation(). |
| 132 TEST_F(ScreenOrientationDispatcherTest, CancelPending_DoubleLock) { | 130 TEST_F(ScreenOrientationDispatcherTest, CancelPending_DoubleLock) { |
| 133 MockLockOrientationCallback::LockOrientationResultHolder callback_results; | 131 MockLockOrientationCallback::LockOrientationResultHolder callback_results; |
| 134 // We create the object to prevent leaks but never actually use it. | 132 // We create the object to prevent leaks but never actually use it. |
| 135 MockLockOrientationCallback::LockOrientationResultHolder callback_results2; | 133 MockLockOrientationCallback::LockOrientationResultHolder callback_results2; |
| 136 | 134 |
| 137 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, | 135 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, |
| 138 new MockLockOrientationCallback(&callback_results)); | 136 new MockLockOrientationCallback(&callback_results)); |
| 139 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, | 137 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, |
| 140 new MockLockOrientationCallback(&callback_results2)); | 138 new MockLockOrientationCallback(&callback_results2)); |
| 141 | 139 |
| 142 EXPECT_FALSE(callback_results.succeeded_); | 140 EXPECT_FALSE(callback_results.succeeded_); |
| 143 EXPECT_TRUE(callback_results.failed_); | 141 EXPECT_TRUE(callback_results.failed_); |
| 144 EXPECT_EQ(blink::WebLockOrientationCallback::ErrorTypeCanceled, | 142 EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results.error_); |
| 145 callback_results.error_); | |
| 146 } | 143 } |
| 147 | 144 |
| 148 // Test that when a LockError message is received, the request is set as failed | 145 // Test that when a LockError message is received, the request is set as failed |
| 149 // with the correct values. | 146 // with the correct values. |
| 150 TEST_F(ScreenOrientationDispatcherTest, LockRequest_Error) { | 147 TEST_F(ScreenOrientationDispatcherTest, LockRequest_Error) { |
| 151 std::list<blink::WebLockOrientationCallback::ErrorType> errors; | 148 std::list<blink::WebLockOrientationError> errors; |
| 152 errors.push_back(blink::WebLockOrientationCallback::ErrorTypeNotAvailable); | 149 errors.push_back(blink::WebLockOrientationErrorNotAvailable); |
| 153 errors.push_back( | 150 errors.push_back( |
| 154 blink::WebLockOrientationCallback::ErrorTypeFullScreenRequired); | 151 blink::WebLockOrientationErrorFullScreenRequired); |
| 155 errors.push_back(blink::WebLockOrientationCallback::ErrorTypeCanceled); | 152 errors.push_back(blink::WebLockOrientationErrorCanceled); |
| 156 | 153 |
| 157 for (std::list<blink::WebLockOrientationCallback::ErrorType>::const_iterator | 154 for (std::list<blink::WebLockOrientationError>::const_iterator |
| 158 it = errors.begin(); it != errors.end(); ++it) { | 155 it = errors.begin(); it != errors.end(); ++it) { |
| 159 MockLockOrientationCallback::LockOrientationResultHolder callback_results; | 156 MockLockOrientationCallback::LockOrientationResultHolder callback_results; |
| 160 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, | 157 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, |
| 161 new MockLockOrientationCallback(&callback_results)); | 158 new MockLockOrientationCallback(&callback_results)); |
| 162 | 159 |
| 163 int request_id = GetFirstLockRequestIdFromSink(); | 160 int request_id = GetFirstLockRequestIdFromSink(); |
| 164 OnMessageReceived( | 161 OnMessageReceived( |
| 165 ScreenOrientationMsg_LockError(routing_id(), request_id, *it)); | 162 ScreenOrientationMsg_LockError(routing_id(), request_id, *it)); |
| 166 | 163 |
| 167 EXPECT_FALSE(callback_results.succeeded_); | 164 EXPECT_FALSE(callback_results.succeeded_); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 | 224 |
| 228 // Test an edge case: a LockError is received but it matches no pending | 225 // Test an edge case: a LockError is received but it matches no pending |
| 229 // callback. | 226 // callback. |
| 230 TEST_F(ScreenOrientationDispatcherTest, ErrorForUnknownRequest) { | 227 TEST_F(ScreenOrientationDispatcherTest, ErrorForUnknownRequest) { |
| 231 MockLockOrientationCallback::LockOrientationResultHolder callback_results; | 228 MockLockOrientationCallback::LockOrientationResultHolder callback_results; |
| 232 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, | 229 LockOrientation(blink::WebScreenOrientationLockPortraitPrimary, |
| 233 new MockLockOrientationCallback(&callback_results)); | 230 new MockLockOrientationCallback(&callback_results)); |
| 234 | 231 |
| 235 int request_id = GetFirstLockRequestIdFromSink(); | 232 int request_id = GetFirstLockRequestIdFromSink(); |
| 236 OnMessageReceived(ScreenOrientationMsg_LockError( | 233 OnMessageReceived(ScreenOrientationMsg_LockError( |
| 237 routing_id(), | 234 routing_id(), request_id + 1, blink::WebLockOrientationErrorCanceled)); |
| 238 request_id + 1, | |
| 239 blink::WebLockOrientationCallback::ErrorTypeCanceled)); | |
| 240 | 235 |
| 241 EXPECT_FALSE(callback_results.succeeded_); | 236 EXPECT_FALSE(callback_results.succeeded_); |
| 242 EXPECT_FALSE(callback_results.failed_); | 237 EXPECT_FALSE(callback_results.failed_); |
| 243 } | 238 } |
| 244 | 239 |
| 245 // Test the following scenario: | 240 // Test the following scenario: |
| 246 // - request1 is received by the dispatcher; | 241 // - request1 is received by the dispatcher; |
| 247 // - request2 is received by the dispatcher; | 242 // - request2 is received by the dispatcher; |
| 248 // - request1 is rejected; | 243 // - request1 is rejected; |
| 249 // - request1 success response is received. | 244 // - request1 success response is received. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 263 | 258 |
| 264 OnMessageReceived(ScreenOrientationMsg_LockSuccess( | 259 OnMessageReceived(ScreenOrientationMsg_LockSuccess( |
| 265 routing_id(), | 260 routing_id(), |
| 266 request_id1, | 261 request_id1, |
| 267 0, | 262 0, |
| 268 blink::WebScreenOrientationPortraitPrimary)); | 263 blink::WebScreenOrientationPortraitPrimary)); |
| 269 | 264 |
| 270 // First request is still rejected. | 265 // First request is still rejected. |
| 271 EXPECT_FALSE(callback_results1.succeeded_); | 266 EXPECT_FALSE(callback_results1.succeeded_); |
| 272 EXPECT_TRUE(callback_results1.failed_); | 267 EXPECT_TRUE(callback_results1.failed_); |
| 273 EXPECT_EQ(blink::WebLockOrientationCallback::ErrorTypeCanceled, | 268 EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results1.error_); |
| 274 callback_results1.error_); | |
| 275 | 269 |
| 276 // Second request is still pending. | 270 // Second request is still pending. |
| 277 EXPECT_FALSE(callback_results2.succeeded_); | 271 EXPECT_FALSE(callback_results2.succeeded_); |
| 278 EXPECT_FALSE(callback_results2.failed_); | 272 EXPECT_FALSE(callback_results2.failed_); |
| 279 } | 273 } |
| 280 | 274 |
| 281 } // namespace content | 275 } // namespace content |
| OLD | NEW |