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

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

Issue 2391883006: Mojo-ify implementation of screen orientation locking/unlocking. (Closed)
Patch Set: Codereview update 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_browsertest.cc
diff --git a/content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc b/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
similarity index 59%
rename from content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc
rename to content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
index 58ca079dd0faebdf5f977e958f26e569d3e46050..41fd10a0a3f954b2ab27015ac0cfb11b0a3c82c2 100644
--- a/content/renderer/screen_orientation/screen_orientation_dispatcher_unittest.cc
+++ b/content/renderer/screen_orientation/screen_orientation_dispatcher_browsertest.cc
@@ -9,14 +9,16 @@
#include <tuple>
#include "base/logging.h"
-#include "content/common/screen_orientation_messages.h"
+#include "content/public/test/render_view_test.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 {
+using LockOrientationCallback =
+ mojom::ScreenOrientation::LockOrientationCallback;
+using LockResult = ::blink::mojom::ScreenOrientationLockResult;
+
// MockLockOrientationCallback is an implementation of
// WebLockOrientationCallback and takes a LockOrientationResultHolder* as a
// parameter when being constructed. The |results_| pointer is owned by the
@@ -27,8 +29,7 @@ namespace content {
class MockLockOrientationCallback : public blink::WebLockOrientationCallback {
public:
struct LockOrientationResultHolder {
- LockOrientationResultHolder()
- : succeeded_(false), failed_(false) {}
+ LockOrientationResultHolder() : succeeded_(false), failed_(false) {}
bool succeeded_;
bool failed_;
@@ -51,35 +52,14 @@ class MockLockOrientationCallback : public blink::WebLockOrientationCallback {
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 {
+class ScreenOrientationDispatcherTest : public RenderViewTest {
mlamouri (slow - plz ping) 2016/11/18 14:51:20 It would be great if in the future we don't need t
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_;
+ RenderViewTest::SetUp();
+ dispatcher_.reset(new ScreenOrientationDispatcher(nullptr));
+ ScreenOrientationAssociatedPtr screen_orientation;
+ mojo::GetDummyProxyForTesting(&screen_orientation);
+ dispatcher_->SetScreenOrientationForTests(screen_orientation);
}
void LockOrientation(blink::WebScreenOrientationLockType orientation,
@@ -87,20 +67,16 @@ class ScreenOrientationDispatcherTest : public testing::Test {
dispatcher_->lockOrientation(orientation, callback);
}
- void UnlockOrientation() {
- dispatcher_->unlockOrientation();
- }
+ void UnlockOrientation() { dispatcher_->unlockOrientation(); }
- void OnMessageReceived(const IPC::Message& message) {
- dispatcher_->OnMessageReceived(message);
+ int GetRequestId() {
+ return dispatcher_->GetRequestIdForTests();
}
- int routing_id() const {
- // We return a fake routing_id() in the context of this test.
- return 0;
+ void RunLockResultCallback(int request_id, LockResult result) {
+ dispatcher_->OnLockOrientationResult(request_id, result);
}
- IPC::TestSink sink_;
std::unique_ptr<ScreenOrientationDispatcher> dispatcher_;
};
@@ -108,6 +84,7 @@ class ScreenOrientationDispatcherTest : public testing::Test {
// the lockOrientation().
TEST_F(ScreenOrientationDispatcherTest, CancelPending_Unlocking) {
MockLockOrientationCallback::LockOrientationResultHolder callback_results;
+
LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
new MockLockOrientationCallback(&callback_results));
UnlockOrientation();
@@ -125,6 +102,7 @@ TEST_F(ScreenOrientationDispatcherTest, CancelPending_DoubleLock) {
LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
new MockLockOrientationCallback(&callback_results));
+
LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
new MockLockOrientationCallback(&callback_results2));
@@ -136,27 +114,24 @@ TEST_F(ScreenOrientationDispatcherTest, CancelPending_DoubleLock) {
// 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) {
+ std::map<LockResult, blink::WebLockOrientationError> errors;
+ errors[LockResult::SCREEN_ORIENTATION_LOCK_RESULT_ERROR_NOT_AVAILABLE] =
+ blink::WebLockOrientationErrorNotAvailable;
+ errors[LockResult::SCREEN_ORIENTATION_LOCK_RESULT_ERROR_FULLSCREEN_REQUIRED] =
+ blink::WebLockOrientationErrorFullscreenRequired;
+ errors[LockResult::SCREEN_ORIENTATION_LOCK_RESULT_ERROR_CANCELED] =
+ blink::WebLockOrientationErrorCanceled;
+
+ for (std::map<LockResult, 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));
-
+ RunLockResultCallback(GetRequestId(), it->first);
EXPECT_FALSE(callback_results.succeeded_);
EXPECT_TRUE(callback_results.failed_);
- EXPECT_EQ(*it, callback_results.error_);
-
- sink().ClearMessages();
+ EXPECT_EQ(it->second, callback_results.error_);
}
}
@@ -167,44 +142,11 @@ TEST_F(ScreenOrientationDispatcherTest, LockRequest_Success) {
LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
new MockLockOrientationCallback(&callback_results));
- int request_id = GetFirstLockRequestIdFromSink();
- OnMessageReceived(ScreenOrientationMsg_LockSuccess(routing_id(),
- request_id));
+ RunLockResultCallback(GetRequestId(),
+ LockResult::SCREEN_ORIENTATION_LOCK_RESULT_SUCCESS);
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) {
mlamouri (slow - plz ping) 2016/11/18 14:51:20 Why was this test removed?
lunalu1 2016/11/21 20:23:52 Because the edge case no longer exits: request_id
- 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) {
mlamouri (slow - plz ping) 2016/11/18 14:51:20 ... and this one?
lunalu1 2016/11/21 20:23:52 Done.
- 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:
@@ -219,15 +161,15 @@ TEST_F(ScreenOrientationDispatcherTest, RaceScenario) {
LockOrientation(blink::WebScreenOrientationLockPortraitPrimary,
new MockLockOrientationCallback(&callback_results1));
- int request_id1 = GetFirstLockRequestIdFromSink();
+ int request_id1 = GetRequestId();
LockOrientation(blink::WebScreenOrientationLockLandscapePrimary,
new MockLockOrientationCallback(&callback_results2));
// callback_results1 must be rejected, tested in CancelPending_DoubleLock.
- OnMessageReceived(ScreenOrientationMsg_LockSuccess(routing_id(),
- request_id1));
+ RunLockResultCallback(request_id1,
+ LockResult::SCREEN_ORIENTATION_LOCK_RESULT_SUCCESS);
// First request is still rejected.
EXPECT_FALSE(callback_results1.succeeded_);

Powered by Google App Engine
This is Rietveld 408576698