15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/login/helper.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/command_line.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chromeos/chromeos_switches.h"
12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_handler.h"
13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_state.h"
14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_state_handler.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/cros_system_api/dbus/service_constants.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/gfx/image/image_skia.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect CalculateScreenBounds(const gfx::Size& size) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Rect bounds(ash::Shell::GetScreen()->GetPrimaryDisplay().bounds());
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!size.IsEmpty()) {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int horizontal_diff = bounds.width() - size.width();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int vertical_diff = bounds.height() - size.height();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bounds.Inset(horizontal_diff / 2, vertical_diff / 2);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return bounds;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetCurrentUserImageSize() {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The biggest size that the profile picture is displayed at is currently
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // 220px, used for the big preview on OOBE and Change Picture options page.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static const int kBaseUserImageSize = 220;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  float scale_factor = gfx::Display::GetForcedDeviceScaleFactor();
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (scale_factor > 1.0f)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return static_cast<int>(scale_factor * kBaseUserImageSize);
3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  return kBaseUserImageSize * gfx::ImageSkia::GetMaxSupportedScale();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace login {
43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool LoginScrollIntoViewEnabled() {
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(USE_ATHENA)
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // TODO(nkostylev): temporary always enable overscroll mode for Athena,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // later we will need special API in Blink to specify which element need to
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // be centered when virtual keyboard shown, crbug.com/411879
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return false;
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return !CommandLine::ForCurrentProcess()->HasSwitch(
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      chromeos::switches::kDisableLoginScrollIntoView);
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochNetworkStateHelper::NetworkStateHelper() {}
57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochNetworkStateHelper::~NetworkStateHelper() {}
58ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 NetworkStateHelper::GetCurrentNetworkName() const {
60ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  NetworkStateHandler* nsh = NetworkHandler::Get()->network_state_handler();
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const NetworkState* network =
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      nsh->ConnectedNetworkByType(NetworkTypePattern::NonVirtual());
63ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (network) {
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    if (network->Matches(NetworkTypePattern::Ethernet()))
65ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      return l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return base::UTF8ToUTF16(network->name());
67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  }
68ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  network = nsh->ConnectingNetworkByType(NetworkTypePattern::NonVirtual());
70ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  if (network) {
7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    if (network->Matches(NetworkTypePattern::Ethernet()))
72ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      return l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return base::UTF8ToUTF16(network->name());
74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  }
75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return base::string16();
76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
77ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
78ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochbool NetworkStateHelper::IsConnected() const {
79ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  chromeos::NetworkStateHandler* nsh =
80ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      chromeos::NetworkHandler::Get()->network_state_handler();
8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return nsh->ConnectedNetworkByType(chromeos::NetworkTypePattern::Default()) !=
8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)         NULL;
83ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
84ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochbool NetworkStateHelper::IsConnecting() const {
86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  chromeos::NetworkStateHandler* nsh =
87ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      chromeos::NetworkHandler::Get()->network_state_handler();
88ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  return nsh->ConnectingNetworkByType(
8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      chromeos::NetworkTypePattern::Default()) != NULL;
90ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
91ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}  // namespace login
93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace chromeos
95