Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(697)

Unified Diff: athena/main/debug/network_selector.cc

Issue 483363003: [Athena] Add status icons and system time to the desktop background (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « athena/main/debug/network_selector.h ('k') | athena/main/placeholder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/main/debug/network_selector.cc
diff --git a/athena/main/debug/network_selector.cc b/athena/main/debug/network_selector.cc
deleted file mode 100644
index 9102e105cf28a39d2993b44aa9ac875829293bd5..0000000000000000000000000000000000000000
--- a/athena/main/debug/network_selector.cc
+++ /dev/null
@@ -1,469 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "athena/main/debug/network_selector.h"
-
-#include "base/memory/weak_ptr.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chromeos/network/network_configuration_handler.h"
-#include "chromeos/network/network_connection_handler.h"
-#include "chromeos/network/network_handler.h"
-#include "chromeos/network/network_profile_handler.h"
-#include "chromeos/network/network_state.h"
-#include "chromeos/network/network_state_handler.h"
-#include "chromeos/network/network_state_handler_observer.h"
-#include "chromeos/network/network_type_pattern.h"
-#include "third_party/cros_system_api/dbus/service_constants.h"
-#include "ui/aura/window.h"
-#include "ui/chromeos/network/network_icon.h"
-#include "ui/chromeos/network/network_info.h"
-#include "ui/chromeos/network/network_list.h"
-#include "ui/chromeos/network/network_list_delegate.h"
-#include "ui/compositor/layer.h"
-#include "ui/gfx/canvas.h"
-#include "ui/gfx/font.h"
-#include "ui/gfx/font_list.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/text_constants.h"
-#include "ui/views/background.h"
-#include "ui/views/border.h"
-#include "ui/views/controls/button/blue_button.h"
-#include "ui/views/controls/button/button.h"
-#include "ui/views/controls/image_view.h"
-#include "ui/views/controls/label.h"
-#include "ui/views/controls/scroll_view.h"
-#include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
-#include "ui/views/controls/textfield/textfield.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/layout/fill_layout.h"
-#include "ui/views/widget/widget.h"
-
-using chromeos::NetworkConfigurationHandler;
-using chromeos::NetworkConnectionHandler;
-using chromeos::NetworkHandler;
-using chromeos::NetworkProfileHandler;
-using chromeos::NetworkState;
-
-namespace {
-
-const int kBackgroundColor = SkColorSetARGB(0x7f, 0, 0, 0);
-
-// The View for the user to enter the password for connceting to a network. This
-// view also shows an error message if the network connection fails.
-class PasswordView : public views::View, public views::ButtonListener {
- public:
- PasswordView(const ui::NetworkInfo& network,
- const base::Callback<void(bool)>& callback,
- views::View* parent_container)
- : network_(network),
- callback_(callback),
- parent_container_(parent_container),
- connect_(NULL),
- cancel_(NULL),
- textfield_(NULL),
- error_msg_(NULL),
- weak_ptr_(this) {
- const int kHorizontal = 5;
- const int kVertical = 0;
- const int kPadding = 0;
-
- views::BoxLayout* layout = new views::BoxLayout(
- views::BoxLayout::kVertical, kHorizontal, kVertical, kPadding);
- layout->set_main_axis_alignment(
- views::BoxLayout::MAIN_AXIS_ALIGNMENT_START);
- layout->set_cross_axis_alignment(
- views::BoxLayout::CROSS_AXIS_ALIGNMENT_STRETCH);
- SetLayoutManager(layout);
-
- views::View* container = new views::View;
- layout = new views::BoxLayout(
- views::BoxLayout::kHorizontal, kHorizontal, kVertical, kPadding);
- layout->set_main_axis_alignment(
- views::BoxLayout::MAIN_AXIS_ALIGNMENT_START);
- container->SetLayoutManager(layout);
-
- textfield_ = new views::Textfield();
- textfield_->set_placeholder_text(base::ASCIIToUTF16("Password"));
- textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD);
- textfield_->set_default_width_in_chars(35);
- container->AddChildView(textfield_);
-
- connect_ = new views::BlueButton(this, base::ASCIIToUTF16("Connect"));
- container->AddChildView(connect_);
-
- cancel_ = new views::LabelButton(this, base::ASCIIToUTF16("Cancel"));
- cancel_->SetHorizontalAlignment(gfx::ALIGN_CENTER);
- container->AddChildView(cancel_);
-
- AddChildView(container);
- }
-
- virtual ~PasswordView() {}
-
- private:
- void Close(bool successful) { callback_.Run(successful); }
-
- void OnKnownError(const std::string& error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
- std::string message;
- if (!error_data->GetString(chromeos::network_handler::kDbusErrorMessage,
- &message))
- message = error_name;
- if (message.empty())
- message = std::string("Unknown error.");
- if (!error_msg_) {
- error_msg_ = new views::Label();
- error_msg_->SetFontList(
- error_msg_->font_list().Derive(0, gfx::Font::BOLD));
- error_msg_->SetEnabledColor(SK_ColorRED);
- }
- error_msg_->SetText(base::UTF8ToUTF16(message));
- if (!error_msg_->parent()) {
- AddChildView(error_msg_);
- InvalidateLayout();
- parent_container_->Layout();
- ScrollRectToVisible(error_msg_->bounds());
- }
- connect_->SetEnabled(true);
- }
-
- void OnSetProfileSucceed(const base::string16& password) {
- base::DictionaryValue properties;
- properties.SetStringWithoutPathExpansion(shill::kPassphraseProperty,
- textfield_->text());
- NetworkHandler::Get()->network_configuration_handler()->SetProperties(
- network_.service_path,
- properties,
- base::Bind(&PasswordView::OnSetPropertiesSucceed,
- weak_ptr_.GetWeakPtr()),
- base::Bind(&PasswordView::OnKnownError, weak_ptr_.GetWeakPtr()));
- }
-
- void OnSetPropertiesSucceed() {
- const bool check_error_state = false;
- NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork(
- network_.service_path,
- base::Bind(&PasswordView::OnConnectionSucceed, weak_ptr_.GetWeakPtr()),
- base::Bind(&PasswordView::OnKnownError, weak_ptr_.GetWeakPtr()),
- check_error_state);
- }
-
- void OnConnectionSucceed() { Close(true); }
-
- // views::View:
- virtual void ViewHierarchyChanged(
- const views::View::ViewHierarchyChangedDetails& details) OVERRIDE {
- if (details.is_add && details.child == this)
- textfield_->RequestFocus();
- }
-
- // views::ButtonListener:
- virtual void ButtonPressed(views::Button* sender,
- const ui::Event& event) OVERRIDE {
- if (sender == connect_) {
- if (error_msg_) {
- RemoveChildView(error_msg_);
- delete error_msg_;
- error_msg_ = NULL;
- }
- connect_->SetEnabled(false);
- NetworkHandler::Get()->network_configuration_handler()->SetNetworkProfile(
- network_.service_path,
- NetworkProfileHandler::GetSharedProfilePath(),
- base::Bind(&PasswordView::OnSetProfileSucceed,
- weak_ptr_.GetWeakPtr(),
- textfield_->text()),
- base::Bind(&PasswordView::OnKnownError, weak_ptr_.GetWeakPtr()));
- } else if (sender == cancel_) {
- Close(false);
- } else {
- NOTREACHED();
- }
- }
-
- ui::NetworkInfo network_;
- base::Callback<void(bool)> callback_;
- views::View* parent_container_;
-
- views::BlueButton* connect_;
- views::LabelButton* cancel_;
- views::Textfield* textfield_;
- views::Label* error_msg_;
- base::WeakPtrFactory<PasswordView> weak_ptr_;
-
- DISALLOW_COPY_AND_ASSIGN(PasswordView);
-};
-
-// A View that represents a single row in the network list. This row also
-// contains the View for taking password for password-protected networks.
-class NetworkRow : public views::View {
- public:
- NetworkRow(const ui::NetworkInfo& network, views::View* container)
- : network_(network), container_(container), weak_ptr_(this) {
- SetBorder(views::Border::CreateEmptyBorder(10, 5, 10, 5));
- SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 10));
- Update(network);
- }
-
- virtual ~NetworkRow() {}
-
- void Update(const ui::NetworkInfo& network) {
- network_ = network;
- views::ImageView* icon = new views::ImageView();
- icon->SetImage(network.image);
- icon->SetBounds(0, 0, network.image.width(), network.image.height());
-
- views::Label* label = new views::Label(network.label);
- if (network.highlight)
- label->SetFontList(label->font_list().Derive(0, gfx::Font::BOLD));
- AddChildView(icon);
- AddChildView(label);
- if (password_view_)
- AddChildView(password_view_.get());
- }
-
- bool has_password_view() const { return password_view_; }
-
- private:
- void OnPasswordComplete(bool successful) {
- password_view_.reset();
- InvalidateLayout();
- container_->Layout();
- ScrollRectToVisible(GetContentsBounds());
- }
-
- void ShowPasswordView(const std::string& service_path) {
- const NetworkState* network =
- NetworkHandler::Get()->network_state_handler()->GetNetworkState(
- service_path);
- if (!network)
- return;
-
- // If this is not a wifi network that needs a password, then ignore.
- if (network->type() != shill::kTypeWifi ||
- network->security() == shill::kSecurityNone) {
- return;
- }
-
- password_view_.reset(new PasswordView(
- network_,
- base::Bind(&NetworkRow::OnPasswordComplete, weak_ptr_.GetWeakPtr()),
- container_));
- password_view_->set_owned_by_client();
- AddChildView(password_view_.get());
- PreferredSizeChanged();
- container_->Layout();
- ScrollRectToVisible(password_view_->bounds());
- }
-
- void OnNetworkConnectionError(const std::string& service_path,
- const std::string& error_name,
- scoped_ptr<base::DictionaryValue> error_data) {
- if (error_name == NetworkConnectionHandler::kErrorConnectCanceled)
- return;
- if (error_name == shill::kErrorBadPassphrase ||
- error_name == NetworkConnectionHandler::kErrorPassphraseRequired ||
- error_name == NetworkConnectionHandler::kErrorConfigurationRequired ||
- error_name == NetworkConnectionHandler::kErrorAuthenticationRequired) {
- ShowPasswordView(service_path);
- }
- }
-
- void ActivateNetwork() {
- const chromeos::NetworkState* network =
- NetworkHandler::Get()->network_state_handler()->GetNetworkState(
- network_.service_path);
- if (!network)
- return;
- if (network->IsConnectedState()) {
- NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork(
- network_.service_path,
- base::Closure(),
- chromeos::network_handler::ErrorCallback());
- } else if (!network->IsConnectingState()) {
- // |network| is not connected, and not already trying to connect.
- NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork(
- network_.service_path,
- base::Closure(),
- base::Bind(&NetworkRow::OnNetworkConnectionError,
- weak_ptr_.GetWeakPtr(),
- network_.service_path),
- false);
- }
- }
-
- // views::View:
- virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE {
- if (event->type() != ui::ET_MOUSE_PRESSED)
- return;
- ActivateNetwork();
- event->SetHandled();
- }
-
- virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE {
- if (gesture->type() != ui::ET_GESTURE_TAP)
- return;
- ActivateNetwork();
- gesture->SetHandled();
- }
-
- ui::NetworkInfo network_;
- views::View* container_;
- base::WeakPtrFactory<NetworkRow> weak_ptr_;
- scoped_ptr<views::View> password_view_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkRow);
-};
-
-class NetworkSelector : public ui::NetworkListDelegate,
- public chromeos::NetworkStateHandlerObserver,
- public ui::EventHandler {
- public:
- explicit NetworkSelector(aura::Window* container)
- : background_view_(NULL),
- scroll_content_(NULL),
- scroller_(NULL),
- network_list_(this) {
- CreateWidget(container);
- CreateNetworkList();
-
- NetworkHandler::Get()->network_state_handler()->RequestScan();
- NetworkHandler::Get()->network_state_handler()->AddObserver(this,
- FROM_HERE);
- }
-
- virtual ~NetworkSelector() {
- NetworkHandler::Get()->network_state_handler()->RemoveObserver(this,
- FROM_HERE);
- }
-
- private:
- void CreateWidget(aura::Window* container) {
- views::Widget::InitParams params;
- params.type = views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
- params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
- params.activatable = views::Widget::InitParams::ACTIVATABLE_DEFAULT;
- params.accept_events = true;
- params.bounds = gfx::Rect(container->bounds().size());
- params.parent = container;
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
- widget_.reset(new views::Widget());
- widget_->Init(params);
- widget_->Show();
-
- background_view_ = new views::View;
- background_view_->set_background(
- views::Background::CreateSolidBackground(kBackgroundColor));
- background_view_->SetBorder(
- views::Border::CreateEmptyBorder(100, 300, 300, 300));
- background_view_->SetLayoutManager(new views::FillLayout());
- background_view_->set_target_handler(this);
-
- widget_->SetContentsView(background_view_);
- }
-
- void CreateNetworkList() {
- const int kListHeight = 500;
- scroller_ = new views::ScrollView();
- scroller_->set_background(
- views::Background::CreateSolidBackground(SK_ColorWHITE));
- scroller_->SetBounds(0, 0, 400, kListHeight);
-
- scroll_content_ = new views::View;
- scroll_content_->SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
- scroller_->SetContents(scroll_content_);
-
- scroller_->ClipHeightTo(kListHeight, kListHeight);
- scroller_->SetVerticalScrollBar(new views::OverlayScrollBar(false));
- background_view_->AddChildView(scroller_);
-
- background_view_->Layout();
-
- network_list_.set_content_view(scroll_content_);
- }
-
- void UpdateNetworkList() { network_list_.UpdateNetworkList(); }
-
- void Close() { delete this; }
-
- // ui::NetworkListDelegate:
- virtual views::View* CreateViewForNetwork(
- const ui::NetworkInfo& info) OVERRIDE {
- return new NetworkRow(info, background_view_);
- }
-
- virtual bool IsViewHovered(views::View* view) OVERRIDE {
- return static_cast<NetworkRow*>(view)->has_password_view();
- }
-
- virtual chromeos::NetworkTypePattern GetNetworkTypePattern() const OVERRIDE {
- return chromeos::NetworkTypePattern::NonVirtual();
- }
-
- virtual void UpdateViewForNetwork(views::View* view,
- const ui::NetworkInfo& info) OVERRIDE {
- static_cast<NetworkRow*>(view)->Update(info);
- }
-
- virtual views::Label* CreateInfoLabel() OVERRIDE {
- views::Label* label = new views::Label();
- return label;
- }
-
- virtual void RelayoutScrollList() OVERRIDE { scroller_->Layout(); }
-
- // chromeos::NetworkStateHandlerObserver:
- virtual void NetworkListChanged() OVERRIDE { UpdateNetworkList(); }
-
- virtual void DeviceListChanged() OVERRIDE {}
-
- virtual void DefaultNetworkChanged(
- const chromeos::NetworkState* network) OVERRIDE {}
-
- virtual void NetworkConnectionStateChanged(
- const chromeos::NetworkState* network) OVERRIDE {}
-
- virtual void NetworkPropertiesUpdated(
- const chromeos::NetworkState* network) OVERRIDE {}
-
- // ui::EventHandler:
- virtual void OnMouseEvent(ui::MouseEvent* mouse) OVERRIDE {
- CHECK_EQ(background_view_, mouse->target());
- if (mouse->type() == ui::ET_MOUSE_PRESSED && !mouse->handled()) {
- Close();
- mouse->SetHandled();
- }
- }
-
- virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE {
- CHECK_EQ(background_view_, gesture->target());
- if (gesture->type() == ui::ET_GESTURE_TAP && !gesture->handled()) {
- Close();
- gesture->SetHandled();
- }
- }
-
- scoped_ptr<views::Widget> widget_;
- views::View* background_view_;
- views::View* scroll_content_;
- views::ScrollView* scroller_;
-
- views::View* connect_;
-
- ui::NetworkListView network_list_;
-
- DISALLOW_COPY_AND_ASSIGN(NetworkSelector);
-};
-
-} // namespace
-
-namespace debug {
-
-void CreateNetworkSelector(aura::Window* container) {
- new NetworkSelector(container);
-}
-
-} // namespace debug
« no previous file with comments | « athena/main/debug/network_selector.h ('k') | athena/main/placeholder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698