12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/options/chromeos/display_overscan_handler.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/display/display_controller.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/screen_ash.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shell.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/display/overscan_calibrator.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_ui.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/generated_resources.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/display.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace options { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The value for the orientation of overscan operations. 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOrientationHorizontal[] = "horizontal"; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOrientationVertical[] = "vertical"; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DisplayOverscanHandler::DisplayOverscanHandler() { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::Shell::GetScreen()->AddObserver(this); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DisplayOverscanHandler::~DisplayOverscanHandler() { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::Shell::GetScreen()->RemoveObserver(this); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::GetLocalizedValues( 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DictionaryValue* localized_strings) { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterTitle(localized_strings, "displayOverscanPage", 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_TAB_TITLE); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) localized_strings->SetString("shrinkAndExpand", l10n_util::GetStringUTF16( 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_SHRINK_EXPAND)); 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) localized_strings->SetString("move", l10n_util::GetStringUTF16( 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_MOVE)); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) localized_strings->SetString("overscanReset", l10n_util::GetStringUTF16( 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_RESET_BUTTON_LABEL)); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) localized_strings->SetString("overscanOK", l10n_util::GetStringUTF16( 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_OK_BUTTON_LABEL)); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) localized_strings->SetString("overscanCancel", l10n_util::GetStringUTF16( 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_OPTIONS_SETTINGS_DISPLAY_OVERSCAN_CANCEL_BUTTON_LABEL)); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::RegisterMessages() { 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "start", 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleStart, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "commit", 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleCommit, 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "reset", 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleReset, 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "cancel", 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleCancel, 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "move", 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleMove, 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->RegisterMessageCallback( 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "resize", 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&DisplayOverscanHandler::HandleResize, 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::OnDisplayBoundsChanged( 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Display& display) { 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::OnDisplayAdded(const gfx::Display& new_display) { 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->CallJavascriptFunction( 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "options.DisplayOverscan.onOverscanCanceled"); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::OnDisplayRemoved(const gfx::Display& old_display) { 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) web_ui()->CallJavascriptFunction( 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "options.DisplayOverscan.onOverscanCanceled"); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleStart(const base::ListValue* args) { 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int64 display_id = gfx::Display::kInvalidDisplayID; 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string id_value; 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!args->GetString(0, &id_value)) { 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "Can't find ID"; 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!base::StringToInt64(id_value, &display_id) || 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) display_id == gfx::Display::kInvalidDisplayID) { 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "Invalid parameter: " << id_value; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Display& display = ash::ScreenAsh::GetDisplayForId(display_id); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(display.is_valid()); 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!display.is_valid()) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::DisplayController* display_controller = 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::Shell::GetInstance()->display_controller(); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_.reset(new OverscanCalibrator( 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) display, 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) display_controller->GetOverscanInsets(display_id))); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleCommit(const base::ListValue* unused_args) { 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (overscan_calibrator_.get()) { 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_->Commit(); 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_.reset(); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleReset(const base::ListValue* unused_args) { 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (overscan_calibrator_.get()) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_->Reset(); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleCancel(const base::ListValue* unused_args) { 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_.reset(); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleMove(const base::ListValue* args) { 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string orientation; 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double length; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!args->GetString(0, &orientation)) { 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The first argument must be orientation"; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!args->GetDouble(1, &length)) { 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The second argument must be a numeric"; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!overscan_calibrator_.get()) 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Insets insets = overscan_calibrator_->insets(); 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (orientation == kOrientationHorizontal) { 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.Set(insets.top(), insets.left() + length, 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.bottom(), insets.right() - length); 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (orientation == kOrientationVertical) { 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.Set(insets.top() + length, insets.left(), 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.bottom() - length, insets.right()); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The orientation must be '" << kOrientationHorizontal 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) << "' or '" << kOrientationVertical << "': " 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) << orientation; 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_->UpdateInsets(insets); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DisplayOverscanHandler::HandleResize(const base::ListValue* args) { 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string orientation; 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) double length; 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!args->GetString(0, &orientation)) { 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The first argument must be orientation"; 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!args->GetDouble(1, &length)) { 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The second argument must be a numeric"; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!overscan_calibrator_.get()) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Insets insets = overscan_calibrator_->insets(); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (orientation == kOrientationHorizontal) { 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.Set(insets.top(), insets.left() + length, 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.bottom(), insets.right() + length); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (orientation == kOrientationVertical) { 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.Set(insets.top() + length, insets.left(), 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) insets.bottom() + length, insets.right()); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOG(ERROR) << "The orientation must be '" << kOrientationHorizontal 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) << "' or '" << kOrientationVertical << "': " 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) << orientation; 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscan_calibrator_->UpdateInsets(insets); 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace options 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 203