| Index: chrome/test/chromedriver/chrome/device_metrics_override_manager.cc
|
| diff --git a/chrome/test/chromedriver/chrome/device_metrics_override_manager.cc b/chrome/test/chromedriver/chrome/device_metrics_override_manager.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..622824a832ea7a083a9544ede72df764690ead99
|
| --- /dev/null
|
| +++ b/chrome/test/chromedriver/chrome/device_metrics_override_manager.cc
|
| @@ -0,0 +1,54 @@
|
| +// Copyright (c) 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/device_metrics_override_manager.h"
|
| +#include "chrome/test/chromedriver/chrome/devtools_client.h"
|
| +#include "chrome/test/chromedriver/chrome/status.h"
|
| +
|
| +DeviceMetricsOverrideManager::DeviceMetricsOverrideManager(DevToolsClient* client)
|
| + : client_(client) {
|
| + client_->AddListener(this);
|
| +}
|
| +
|
| +DeviceMetricsOverrideManager::~DeviceMetricsOverrideManager() {
|
| +}
|
| +
|
| +Status DeviceMetricsOverrideManager::OverrideDeviceMetrics(
|
| + const DeviceMetrics& device_metrics) {
|
| + overridden_device_metrics_.reset(new DeviceMetrics(device_metrics));
|
| + return ApplyOverrideIfNeeded();
|
| +}
|
| +
|
| +Status DeviceMetricsOverrideManager::OnConnected(DevToolsClient* client) {
|
| + return ApplyOverrideIfNeeded();
|
| +}
|
| +
|
| +Status DeviceMetricsOverrideManager::OnEvent(
|
| + DevToolsClient* client,
|
| + const std::string& method,
|
| + const base::DictionaryValue& params) {
|
| + if (method == "Page.frameNavigated") {
|
| + const base::Value* unused_value;
|
| + if (!params.Get("frame.parentId", &unused_value))
|
| + return ApplyOverrideIfNeeded();
|
| + }
|
| + return Status(kOk);
|
| +}
|
| +
|
| +Status DeviceMetricsOverrideManager::ApplyOverrideIfNeeded() {
|
| + if (!overridden_device_metrics_)
|
| + return Status(kOk);
|
| +
|
| + base::DictionaryValue params;
|
| + params.SetInteger("width", overridden_device_metrics_->width);
|
| + params.SetInteger("height", overridden_device_metrics_->height);
|
| + params.SetDouble("deviceScaleFactor", overridden_device_metrics_->device_scale_factor);
|
| + params.SetBoolean("emulateViewport", overridden_device_metrics_->emulate_viewport);
|
| + params.SetBoolean("fitWindow", overridden_device_metrics_->fit_window);
|
| + params.SetBoolean("textAutosizing", overridden_device_metrics_->text_autosizing);
|
| + params.SetDouble("fontScaleFactor", overridden_device_metrics_->font_scale_factor);
|
| + return client_->SendCommand("Page.setDeviceMetricsOverride", params);
|
| +}
|
|
|