File: web_app_left_header_view_ash.cc

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (96 lines) | stat: -rw-r--r-- 3,455 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// 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 "chrome/browser/ui/views/frame/web_app_left_header_view_ash.h"

#include "ash/frame/caption_buttons/frame_caption_button.h"
#include "ash/frame/caption_buttons/frame_caption_button_container_view.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/toolbar/toolbar_model.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "content/public/browser/navigation_entry.h"
#include "grit/ash_resources.h"
#include "ui/views/layout/box_layout.h"

// static
const char WebAppLeftHeaderView::kViewClassName[] = "WebAppLeftHeaderView";

WebAppLeftHeaderView::WebAppLeftHeaderView(BrowserView* browser_view)
    : browser_view_(browser_view) {
  SetLayoutManager(
      new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));

  back_button_ =
      new ash::FrameCaptionButton(this, ash::CAPTION_BUTTON_ICON_BACK);
  back_button_->SetImages(
      ash::CAPTION_BUTTON_ICON_BACK, ash::FrameCaptionButton::ANIMATE_NO,
      IDR_AURA_WINDOW_CONTROL_ICON_BACK, IDR_AURA_WINDOW_CONTROL_ICON_BACK_I,
      IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
      IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
  AddChildView(back_button_);

  location_icon_ =
      new ash::FrameCaptionButton(this, ash::CAPTION_BUTTON_ICON_LOCATION);
  AddChildView(location_icon_);

  Update();
}

WebAppLeftHeaderView::~WebAppLeftHeaderView() {
}

void WebAppLeftHeaderView::Update() {
  int icon_resource = browser_view_->browser()->toolbar_model()->GetIcon();
  location_icon_->SetImages(
      ash::CAPTION_BUTTON_ICON_LOCATION, ash::FrameCaptionButton::ANIMATE_NO,
      icon_resource, icon_resource, IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
      IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);

  back_button_->SetState(
      chrome::IsCommandEnabled(browser_view_->browser(), IDC_BACK)
          ? views::Button::STATE_NORMAL
          : views::Button::STATE_DISABLED);
}

void WebAppLeftHeaderView::SetPaintAsActive(bool active) {
  // TODO(benwells): Check that the disabled and inactive states should be
  // drawn in the same way.
  back_button_->set_paint_as_active(
      active && chrome::IsCommandEnabled(browser_view_->browser(), IDC_BACK));
  location_icon_->set_paint_as_active(active);
}

views::View* WebAppLeftHeaderView::GetLocationIconView() const {
  return location_icon_;
}

const char* WebAppLeftHeaderView::GetClassName() const {
  return kViewClassName;
}

void WebAppLeftHeaderView::ButtonPressed(views::Button* sender,
                                         const ui::Event& event) {
  if (sender == back_button_)
    chrome::ExecuteCommand(browser_view_->browser(), IDC_BACK);
  else if (sender == location_icon_)
    ShowWebsiteSettings();
  else
    NOTREACHED();
}

void WebAppLeftHeaderView::ShowWebsiteSettings() const {
  content::WebContents* tab = browser_view_->GetActiveWebContents();
  if (!tab)
    return;

  // Important to use GetVisibleEntry to match what's showing in the title area.
  content::NavigationEntry* nav_entry = tab->GetController().GetVisibleEntry();
  // The visible entry can be NULL in the case of window.open("").
  if (!nav_entry)
    return;

  chrome::ShowWebsiteSettings(browser_view_->browser(), tab,
                              nav_entry->GetURL(), nav_entry->GetSSL());
}