1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// found in the LICENSE file.
4868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <string>
6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include <vector>
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/compiler_specific.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/test/chromedriver/chrome/adb.h"
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/test/chromedriver/chrome/device_manager.h"
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/test/chromedriver/chrome/status.h"
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace {
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class FakeAdb : public Adb {
18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) public:
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FakeAdb() {}
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual ~FakeAdb() {}
21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status GetDevices(std::vector<std::string>* devices) OVERRIDE {
23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    devices->push_back("a");
24868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    devices->push_back("b");
25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
26868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status ForwardPort(const std::string& device_serial,
29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                             int local_port,
30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                             const std::string& remote_abstract) OVERRIDE {
31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
34d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  virtual Status SetCommandLineFile(const std::string& device_serial,
35d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                                    const std::string& command_line_file,
36d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                                    const std::string& exec_name,
37d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                                    const std::string& args) OVERRIDE {
38868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
39868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status CheckAppInstalled(const std::string& device_serial,
42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                                   const std::string& package) OVERRIDE {
43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status ClearAppData(const std::string& device_serial,
47868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                              const std::string& package) OVERRIDE {
48868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
49868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
50868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual Status SetDebugApp(const std::string& device_serial,
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                              const std::string& package) OVERRIDE {
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return Status(kOk);
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
56868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status Launch(const std::string& device_serial,
57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                        const std::string& package,
58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                        const std::string& activity) OVERRIDE {
59868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
60868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
61868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
62868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual Status ForceStop(const std::string& device_serial,
63868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                           const std::string& package) OVERRIDE {
64868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return Status(kOk);
65868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  }
66d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch
67d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  virtual Status GetPidByName(const std::string& device_serial,
68d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                              const std::string& process_name,
69d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch                              int* pid) OVERRIDE {
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    *pid = 0; // avoid uninit error crbug.com/393231
71d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch    return Status(kOk);
72d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch  }
73868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)};
74868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
75868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}  // namespace
76868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
77868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(DeviceManager, AcquireDevice) {
78868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FakeAdb adb;
79868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  DeviceManager device_manager(&adb);
80868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device1;
81868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device2;
82868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device3;
83868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireDevice(&device1).IsOk());
84868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireDevice(&device2).IsOk());
85868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_FALSE(device_manager.AcquireDevice(&device3).IsOk());
86868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  device1.reset(NULL);
87868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireDevice(&device3).IsOk());
88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_FALSE(device_manager.AcquireDevice(&device1).IsOk());
89868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
90868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
91868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(DeviceManager, AcquireSpecificDevice) {
92868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FakeAdb adb;
93868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  DeviceManager device_manager(&adb);
94868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device1;
95868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device2;
96868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device3;
97868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireSpecificDevice("a", &device1).IsOk());
98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_FALSE(device_manager.AcquireSpecificDevice("a", &device2).IsOk());
99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireSpecificDevice("b", &device3).IsOk());
100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  device1.reset(NULL);
101868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireSpecificDevice("a", &device2).IsOk());
102868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_FALSE(device_manager.AcquireSpecificDevice("a", &device1).IsOk());
103868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_FALSE(device_manager.AcquireSpecificDevice("b", &device1).IsOk());
104868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
105868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
106d3868032626d59662ff73b372b5d584c1d144c53Ben MurdochTEST(Device, StartStopApp) {
107868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  FakeAdb adb;
108868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  DeviceManager device_manager(&adb);
109868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  scoped_ptr<Device> device1;
110868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  ASSERT_TRUE(device_manager.AcquireDevice(&device1).IsOk());
111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->TearDown().IsOk());
112a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->SetUp("a.chrome.package", "", "", "", false, 0).IsOk());
113a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_FALSE(device1->SetUp("a.chrome.package", "", "", "", false, 0).IsOk());
114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->TearDown().IsOk());
115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_FALSE(device1->SetUp(
116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      "a.chrome.package", "an.activity", "", "", false, 0).IsOk());
117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_FALSE(device1->SetUp("a.package", "", "", "", false, 0).IsOk());
118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->SetUp(
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      "a.package", "an.activity", "", "", false, 0).IsOk());
120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->TearDown().IsOk());
121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->TearDown().IsOk());
122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->SetUp(
123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      "a.package", "an.activity", "a.process", "", false, 0).IsOk());
124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ASSERT_TRUE(device1->TearDown().IsOk());
125868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
126