// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/ui/views/frame/webui_tab_strip_field_trial.h" #include "base/feature_list.h" #include "base/logging.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" #include "chrome/browser/ui/ui_features.h" // Platform-specific headers for detecting tablet devices. #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/public/cpp/tablet_mode.h" #elif BUILDFLAG(IS_WIN) #include <windows.h> #endif // BUILDFLAG(IS_CHROMEOS_ASH) namespace { #if BUILDFLAG(IS_WIN) // Returns whether the screen supports touch input. Returns false if it // couldn't be checked. bool HasBuiltInTouchScreen() { int result = ::GetSystemMetrics(SM_DIGITIZER); // The |result| can be a combination of the following: // - NID_INTEGRATED_TOUCH: built-in touch screen // - NID_EXTERNAL_TOUCH: external touch screen or tablet // - NID_INTEGRATED_PEN: built-in pen support // - NID_EXTERNAL_PEN: external pen screen or tablet // - NID_MULTI_INPUT: not sure what this means // - NID_READY: currently ready to receive touch or pen input // // Ideally, we want to determine if a device is a tablet or // convertible. This means it supports entering system tablet mode. // There is no direct way to check this, however having a built-in // touch screen is a good proxy. Ignore pen digitizers; if a device // only supports pen input it probably isn't a tablet. return (result & NID_INTEGRATED_TOUCH) != 0; } #endif // BUILDFLAG(IS_WIN) } // namespace // static void WebUITabStripFieldTrial::RegisterFieldTrialIfNecessary() { … } WebUITabStripFieldTrial::WebUITabStripFieldTrial() { … } // static bool WebUITabStripFieldTrial::DeviceIsTabletModeCapable() { … }