blob: e9802051c45cbff1eca6cad068b56b1fec8212c3 [file] [log] [blame]
// 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 "base/values.h"
#include "chrome/test/chromedriver/chrome/device_metrics.h"
#include "chrome/test/chromedriver/chrome/mobile_emulation_override_manager.h"
#include "chrome/test/chromedriver/chrome/recorder_devtools_client.h"
#include "chrome/test/chromedriver/chrome/status.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
void AssertDeviceMetricsCommand(const Command& command,
const DeviceMetrics& device_metrics) {
ASSERT_EQ("Page.setDeviceMetricsOverride", command.method);
int width, height;
double device_scale_factor, font_scale_factor;
bool mobile, fit_window, text_autosizing;
ASSERT_TRUE(command.params.GetInteger("width", &width));
ASSERT_TRUE(command.params.GetInteger("height", &height));
ASSERT_TRUE(command.params.GetDouble("deviceScaleFactor",
&device_scale_factor));
ASSERT_TRUE(command.params.GetBoolean("mobile", &mobile));
ASSERT_TRUE(command.params.GetBoolean("fitWindow", &fit_window));
ASSERT_TRUE(command.params.GetBoolean("textAutosizing", &text_autosizing));
ASSERT_TRUE(command.params.GetDouble("fontScaleFactor", &font_scale_factor));
ASSERT_EQ(device_metrics.width, width);
ASSERT_EQ(device_metrics.height, height);
ASSERT_EQ(device_metrics.device_scale_factor, device_scale_factor);
ASSERT_EQ(device_metrics.mobile, mobile);
ASSERT_EQ(device_metrics.fit_window, fit_window);
ASSERT_EQ(device_metrics.text_autosizing, text_autosizing);
ASSERT_EQ(device_metrics.font_scale_factor, font_scale_factor);
}
} // namespace
TEST(MobileEmulationOverrideManager, SendsCommandWithTouchOnConnect) {
RecorderDevToolsClient client;
DeviceMetrics device_metrics(1, 2, 3.0, true, true);
MobileEmulationOverrideManager manager(&client, &device_metrics);
ASSERT_EQ(0u, client.commands_.size());
ASSERT_EQ(kOk, manager.OnConnected(&client).code());
ASSERT_EQ(2u, client.commands_.size());
ASSERT_EQ(kOk, manager.OnConnected(&client).code());
ASSERT_EQ(4u, client.commands_.size());
ASSERT_NO_FATAL_FAILURE(
AssertDeviceMetricsCommand(client.commands_[2], device_metrics));
}
TEST(MobileEmulationOverrideManager, SendsCommandWithoutTouchOnConnect) {
RecorderDevToolsClient client;
DeviceMetrics device_metrics(1, 2, 3.0, false, true);
MobileEmulationOverrideManager manager(&client, &device_metrics);
ASSERT_EQ(0u, client.commands_.size());
ASSERT_EQ(kOk, manager.OnConnected(&client).code());
ASSERT_EQ(1u, client.commands_.size());
ASSERT_EQ(kOk, manager.OnConnected(&client).code());
ASSERT_EQ(2u, client.commands_.size());
ASSERT_NO_FATAL_FAILURE(
AssertDeviceMetricsCommand(client.commands_[1], device_metrics));
}
TEST(MobileEmulationOverrideManager, SendsCommandOnNavigation) {
RecorderDevToolsClient client;
DeviceMetrics device_metrics(1, 2, 3.0, true, true);
MobileEmulationOverrideManager manager(&client, &device_metrics);
base::DictionaryValue main_frame_params;
ASSERT_EQ(kOk,
manager.OnEvent(&client, "Page.frameNavigated", main_frame_params)
.code());
ASSERT_EQ(2u, client.commands_.size());
ASSERT_EQ(kOk,
manager.OnEvent(&client, "Page.frameNavigated", main_frame_params)
.code());
ASSERT_EQ(4u, client.commands_.size());
ASSERT_NO_FATAL_FAILURE(
AssertDeviceMetricsCommand(client.commands_[2], device_metrics));
base::DictionaryValue sub_frame_params;
sub_frame_params.SetString("frame.parentId", "id");
ASSERT_EQ(
kOk,
manager.OnEvent(&client, "Page.frameNavigated", sub_frame_params).code());
ASSERT_EQ(4u, client.commands_.size());
}