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
3// found in the LICENSE file.
4
5#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_MOBILE_EMULATION_OVERRIDE_MANAGER_H_
6#define CHROME_TEST_CHROMEDRIVER_CHROME_MOBILE_EMULATION_OVERRIDE_MANAGER_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "base/memory/scoped_ptr.h"
13#include "chrome/test/chromedriver/chrome/devtools_event_listener.h"
14
15namespace base {
16class DictionaryValue;
17}
18
19struct BrowserInfo;
20class DevToolsClient;
21struct DeviceMetrics;
22class Status;
23
24// Overrides the device metrics, if requested, for the duration of the
25// given |DevToolsClient|'s lifetime.
26class MobileEmulationOverrideManager : public DevToolsEventListener {
27 public:
28  MobileEmulationOverrideManager(DevToolsClient* client,
29                                 const DeviceMetrics* device_metrics,
30                                 const BrowserInfo* browser_info);
31  virtual ~MobileEmulationOverrideManager();
32
33  // Overridden from DevToolsEventListener:
34  virtual Status OnConnected(DevToolsClient* client) OVERRIDE;
35  virtual Status OnEvent(DevToolsClient* client,
36                         const std::string& method,
37                         const base::DictionaryValue& params) OVERRIDE;
38
39 private:
40  Status ApplyOverrideIfNeeded();
41
42  DevToolsClient* client_;
43  const DeviceMetrics* overridden_device_metrics_;
44  const BrowserInfo* browser_info_;
45
46  DISALLOW_COPY_AND_ASSIGN(MobileEmulationOverrideManager);
47};
48
49#endif  // CHROME_TEST_CHROMEDRIVER_CHROME_MOBILE_EMULATION_OVERRIDE_MANAGER_H_
50