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

Unified Diff: content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc

Issue 2391883006: Mojo-ify implementation of screen orientation locking/unlocking. (Closed)
Patch Set: clup Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc
diff --git a/content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc b/content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc
deleted file mode 100644
index 58ca079dd0faebdf5f977e958f26e569d3e46050..0000000000000000000000000000000000000000
--- a/content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/renderer/screen_orientation/screen_orientation_dispatcher.h"
-
-#include <list>
-#include <memory>
-#include <tuple>
-
-#include "base/logging.h"
-#include "content/common/screen_orientation_messages.h"
-#include "content/public/test/test_utils.h"
-#include "ipc/ipc_test_sink.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/WebKit/public/platform/modules/screen_orientation/WebLockOrientationCallback.h"
-
-namespace content {
-
-// MockLockOrientationCallback is an implementation of
-// WebLockOrientationCallback and takes a LockOrientationResultHolder* as a
-// parameter when being constructed. The |results_| pointer is owned by the
-// caller and not by the callback object. The intent being that as soon as the
-// callback is resolved, it will be killed so we use the
-// LockOrientationResultHolder to know in which state the callback object is at
-// any time.
-class MockLockOrientationCallback : public blink::WebLockOrientationCallback {
- public:
- struct LockOrientationResultHolder {
- LockOrientationResultHolder()
- : succeeded_(false), failed_(false) {}
-
- bool succeeded_;
- bool failed_;
- blink::WebLockOrientationError error_;
- };
-
- explicit MockLockOrientationCallback(LockOrientationResultHolder* results)
- : results_(results) {}
-
- void onSuccess() override { results_->succeeded_ = true; }
-
- void onError(blink::WebLockOrientationError error) override {
- results_->failed_ = true;
- results_->error_ = error;
- }
-
- private:
- ~MockLockOrientationCallback() override {}
-
- LockOrientationResultHolder* results_;
-};
-
-class ScreenOrientationDispatcherWithSink : public ScreenOrientationDispatcher {
- public:
- explicit ScreenOrientationDispatcherWithSink(IPC::TestSink* sink)
- :ScreenOrientationDispatcher(NULL) , sink_(sink) {
- }
-
- bool Send(IPC::Message* message) override { return sink_->Send(message); }
-
- IPC::TestSink* sink_;
-};
-
-class ScreenOrientationDispatcherTest : public testing::Test {
- protected:
- void SetUp() override {
- dispatcher_.reset(new ScreenOrientationDispatcherWithSink(&sink_));
- }
-
- int GetFirstLockRequestIdFromSink() {
- const IPC::Message* msg = sink().GetFirstMessageMatching(
- ScreenOrientationHostMsg_LockRequest::ID);
- EXPECT_TRUE(msg != NULL);
-
- std::tuple<blink::WebScreenOrientationLockType, int> params;
- ScreenOrientationHostMsg_LockRequest::Read(msg, &params);
- return std::get<1>(params);
- }
-
- IPC::TestSink& sink() {
- return sink_;
- }
-
- void LockOrientation(blink::WebScreenOrientationLockType orientation,
- blink::WebLockOrientationCallback* callback) {
- dispatcher_->lockOrientation(orientation, callback);
- }
-
- void UnlockOrientation() {
- dispatcher_->unlockOrientation();
- }
-
- void OnMessageReceived(const IPC::Message& message) {
- dispatcher_->OnMessageReceived(message);
- }
-
- int routing_id() const {
- // We return a fake routing_id() in the context of this test.
- return 0;
- }
-
- IPC::TestSink sink_;
- std::unique_ptr<ScreenOrientationDispatcher> dispatcher_;
-};
-
-// Test that calling lockOrientation() followed by unlockOrientation() cancel
-// the lockOrientation().
-TEST_F(ScreenOrientationDispatcherTest, CancelPending_Unlocking) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
- UnlockOrientation();
-
- EXPECT_FALSE(callback_results.succeeded_);
- EXPECT_TRUE(callback_results.failed_);
- EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results.error_);
-}
-
-// Test that calling lockOrientation() twice cancel the first lockOrientation().
-TEST_F(ScreenOrientationDispatcherTest, CancelPending_DoubleLock) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- // We create the object to prevent leaks but never actually use it.
- MockLockOrientationCallback::LockOrientationResultHolder callback_results2;
-
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results2));
-
- EXPECT_FALSE(callback_results.succeeded_);
- EXPECT_TRUE(callback_results.failed_);
- EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results.error_);
-}
-
-// Test that when a LockError message is received, the request is set as failed
-// with the correct values.
-TEST_F(ScreenOrientationDispatcherTest, LockRequest_Error) {
- std::list<blink::WebLockOrientationError> errors;
- errors.push_back(blink::WebLockOrientationErrorNotAvailable);
- errors.push_back(
- blink::WebLockOrientationErrorFullscreenRequired);
- errors.push_back(blink::WebLockOrientationErrorCanceled);
-
- for (std::list<blink::WebLockOrientationError>::const_iterator
- it = errors.begin(); it != errors.end(); ++it) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
-
- int request_id = GetFirstLockRequestIdFromSink();
- OnMessageReceived(
- ScreenOrientationMsg_LockError(routing_id(), request_id, *it));
-
- EXPECT_FALSE(callback_results.succeeded_);
- EXPECT_TRUE(callback_results.failed_);
- EXPECT_EQ(*it, callback_results.error_);
-
- sink().ClearMessages();
- }
-}
-
-// Test that when a LockSuccess message is received, the request is set as
-// succeeded.
-TEST_F(ScreenOrientationDispatcherTest, LockRequest_Success) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
-
- int request_id = GetFirstLockRequestIdFromSink();
- OnMessageReceived(ScreenOrientationMsg_LockSuccess(routing_id(),
- request_id));
-
- EXPECT_TRUE(callback_results.succeeded_);
- EXPECT_FALSE(callback_results.failed_);
-
- sink().ClearMessages();
-}
-
-// Test an edge case: a LockSuccess is received but it matches no pending
-// callback.
-TEST_F(ScreenOrientationDispatcherTest, SuccessForUnknownRequest) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
-
- int request_id = GetFirstLockRequestIdFromSink();
- OnMessageReceived(ScreenOrientationMsg_LockSuccess(routing_id(),
- request_id + 1));
-
- EXPECT_FALSE(callback_results.succeeded_);
- EXPECT_FALSE(callback_results.failed_);
-}
-
-// Test an edge case: a LockError is received but it matches no pending
-// callback.
-TEST_F(ScreenOrientationDispatcherTest, ErrorForUnknownRequest) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results;
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results));
-
- int request_id = GetFirstLockRequestIdFromSink();
- OnMessageReceived(ScreenOrientationMsg_LockError(
- routing_id(), request_id + 1, blink::WebLockOrientationErrorCanceled));
-
- EXPECT_FALSE(callback_results.succeeded_);
- EXPECT_FALSE(callback_results.failed_);
-}
-
-// Test the following scenario:
-// - request1 is received by the dispatcher;
-// - request2 is received by the dispatcher;
-// - request1 is rejected;
-// - request1 success response is received.
-// Expected: request1 is still rejected, request2 has not been set as succeeded.
-TEST_F(ScreenOrientationDispatcherTest, RaceScenario) {
- MockLockOrientationCallback::LockOrientationResultHolder callback_results1;
- MockLockOrientationCallback::LockOrientationResultHolder callback_results2;
-
- LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
- new MockLockOrientationCallback(&callback_results1));
- int request_id1 = GetFirstLockRequestIdFromSink();
-
- LockOrientation(blink::WebScreenOrientationLockLandscapePrimary,
- new MockLockOrientationCallback(&callback_results2));
-
- // callback_results1 must be rejected, tested in CancelPending_DoubleLock.
-
- OnMessageReceived(ScreenOrientationMsg_LockSuccess(routing_id(),
- request_id1));
-
- // First request is still rejected.
- EXPECT_FALSE(callback_results1.succeeded_);
- EXPECT_TRUE(callback_results1.failed_);
- EXPECT_EQ(blink::WebLockOrientationErrorCanceled, callback_results1.error_);
-
- // Second request is still pending.
- EXPECT_FALSE(callback_results2.succeeded_);
- EXPECT_FALSE(callback_results2.failed_);
-}
-
-} // namespace content
« no previous file with comments | « content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc ('k') | content/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698