11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector> 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ash/display/display_info.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ash/touch/touchscreen_util.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "testing/gtest/include/gtest/gtest.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace ash { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass TouchscreenUtilTest : public testing::Test { 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TouchscreenUtilTest() {} 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~TouchscreenUtilTest() {} 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SetUp() OVERRIDE { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Internal display will always match to internal touchscreen. If internal 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // touchscreen can't be detected, it is then associated to a touch screen 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // with matching size. 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayInfo display(1, std::string(), false); 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayMode mode(gfx::Size(1920, 1080), 60.0, false, true); 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mode.native = true; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<DisplayMode> modes(1, mode); 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci display.set_display_modes(modes); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_.push_back(display); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci gfx::Display::SetInternalDisplayId(1); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayInfo display(2, std::string(), false); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayMode mode(gfx::Size(800, 600), 60.0, false, true); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mode.native = true; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<DisplayMode> modes(1, mode); 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci display.set_display_modes(modes); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_.push_back(display); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Display without native mode. Must not be matched to any touch screen. 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayInfo display(3, std::string(), false); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_.push_back(display); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci { 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayInfo display(4, std::string(), false); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DisplayMode mode(gfx::Size(1024, 768), 60.0, false, true); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci mode.native = true; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<DisplayMode> modes(1, mode); 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci display.set_display_modes(modes); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_.push_back(display); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void TearDown() OVERRIDE { 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_.clear(); 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<DisplayInfo> displays_; 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(TouchscreenUtilTest); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, NoTouchscreens) { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (size_t i = 0; i < displays_.size(); ++i) 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci displays_[i].touch_device_id()); 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, OneToOneMapping) { 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(1, gfx::Size(800, 600), false)); 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(2, gfx::Size(1024, 768), false)); 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id()); 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1, displays_[1].touch_device_id()); 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id()); 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(2, displays_[3].touch_device_id()); 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, MapToCorrectDisplaySize) { 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(2, gfx::Size(1024, 768), false)); 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id()); 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[1].touch_device_id()); 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id()); 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(2, displays_[3].touch_device_id()); 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, MapWhenSizeDiffersByOne) { 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(1, gfx::Size(801, 600), false)); 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(2, gfx::Size(1023, 768), false)); 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id()); 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1, displays_[1].touch_device_id()); 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id()); 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(2, displays_[3].touch_device_id()); 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, MapWhenSizesDoNotMatch) { 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(1, gfx::Size(1022, 768), false)); 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(2, gfx::Size(802, 600), false)); 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[0].touch_device_id()); 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1, displays_[1].touch_device_id()); 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id()); 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(2, displays_[3].touch_device_id()); 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(TouchscreenUtilTest, MapInternalTouchscreen) { 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<ui::TouchscreenDevice> devices; 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(1, gfx::Size(1920, 1080), false)); 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci devices.push_back(ui::TouchscreenDevice(2, gfx::Size(9999, 888), true)); 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AssociateTouchscreens(&displays_, devices); 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Internal touchscreen is always mapped to internal display. 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(2, displays_[0].touch_device_id()); 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1, displays_[1].touch_device_id()); 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[2].touch_device_id()); 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ui::TouchscreenDevice::kInvalidId, displays_[3].touch_device_id()); 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace ash 143