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

Side by Side Diff: athena/activity/activity_frame_view.cc

Issue 550643002: [Athena] Hack to display favicons for web activities in overview mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "athena/activity/activity_frame_view.h" 5 #include "athena/activity/activity_frame_view.h"
6 6
7 #include "athena/activity/public/activity_view_model.h" 7 #include "athena/activity/public/activity_view_model.h"
8 #include "athena/wm/public/window_manager.h" 8 #include "athena/wm/public/window_manager.h"
9 #include "third_party/skia/include/core/SkBitmap.h"
10 #include "ui/base/hit_test.h" 9 #include "ui/base/hit_test.h"
11 #include "ui/gfx/canvas.h" 10 #include "ui/gfx/canvas.h"
12 #include "ui/gfx/image/image_skia.h" 11 #include "ui/gfx/image/image_skia.h"
13 #include "ui/views/background.h" 12 #include "ui/views/background.h"
14 #include "ui/views/controls/image_view.h" 13 #include "ui/views/controls/image_view.h"
15 #include "ui/views/controls/label.h" 14 #include "ui/views/controls/label.h"
16 #include "ui/views/view.h" 15 #include "ui/views/view.h"
17 #include "ui/views/widget/widget.h" 16 #include "ui/views/widget/widget.h"
18 #include "ui/views/widget/widget_delegate.h" 17 #include "ui/views/widget/widget_delegate.h"
19 #include "ui/views/window/client_view.h" 18 #include "ui/views/window/client_view.h"
20 19
21 namespace athena { 20 namespace athena {
22 namespace { 21 namespace {
23 22
24 // The icon size. 23 // The icon size.
25 const int kIconSize = 32; 24 const int kIconSize = 32;
26 25
27 // The distance between the icon and the title when the icon is visible. 26 // The distance between the icon and the title when the icon is visible.
28 const int kIconTitleSpacing = 5; 27 const int kIconTitleSpacing = 10;
29 28
30 // The height of the top border necessary to display the title without the icon. 29 // The height of the top border necessary to display the title without the icon.
31 const int kDefaultTitleHeight = 25; 30 const int kDefaultTitleHeight = 25;
32 31
33 // The height of the top border in overview mode. 32 // The height of the top border in overview mode.
34 const int kOverviewTitleHeight = 55; 33 const int kOverviewTitleHeight = 55;
35 34
36 // The height of the top border for fullscreen and frameless activities in 35 // The height of the top border for fullscreen and frameless activities in
37 // overview mode. 36 // overview mode.
38 const int kOverviewShortTitleHeight = 30; 37 const int kOverviewShortTitleHeight = 30;
39 38
40 // The thickness of the left, right and bottom borders in overview mode. 39 // The thickness of the left, right and bottom borders in overview mode.
41 const int kOverviewBorderThickness = 5; 40 const int kOverviewBorderThickness = 5;
42 41
43 } // namespace 42 } // namespace
44 43
45 // static 44 // static
46 const char ActivityFrameView::kViewClassName[] = "ActivityFrameView"; 45 const char ActivityFrameView::kViewClassName[] = "ActivityFrameView";
47 46
48 ActivityFrameView::ActivityFrameView(views::Widget* frame, 47 ActivityFrameView::ActivityFrameView(views::Widget* frame,
49 ActivityViewModel* view_model) 48 ActivityViewModel* view_model)
50 : frame_(frame), 49 : frame_(frame),
51 view_model_(view_model), 50 view_model_(view_model),
52 title_(new views::Label), 51 title_(new views::Label),
53 icon_(new views::ImageView), 52 icon_(new views::ImageView),
54 in_overview_(false) { 53 in_overview_(false) {
55 title_->SetEnabledColor(SkColorSetA(SK_ColorBLACK, 0xe5)); 54 title_->SetEnabledColor(SkColorSetA(SK_ColorBLACK, 0xe5));
56 55
57 SkBitmap bitmap;
58 bitmap.allocN32Pixels(kIconSize, kIconSize);
59 bitmap.eraseARGB(255, 0, 255, 0);
60 icon_->SetImage(gfx::ImageSkia::CreateFrom1xBitmap(bitmap));
61
62 AddChildView(title_); 56 AddChildView(title_);
63 AddChildView(icon_); 57 AddChildView(icon_);
64 58
65 SkColor bgcolor = view_model_->GetRepresentativeColor();
66 set_background(views::Background::CreateSolidBackground(bgcolor));
67 UpdateWindowTitle(); 59 UpdateWindowTitle();
60 UpdateWindowIcon();
68 61
69 WindowManager::GetInstance()->AddObserver(this); 62 WindowManager::GetInstance()->AddObserver(this);
70 } 63 }
71 64
72 ActivityFrameView::~ActivityFrameView() { 65 ActivityFrameView::~ActivityFrameView() {
73 WindowManager::GetInstance()->RemoveObserver(this); 66 WindowManager::GetInstance()->RemoveObserver(this);
74 } 67 }
75 68
76 gfx::Rect ActivityFrameView::GetBoundsForClientView() const { 69 gfx::Rect ActivityFrameView::GetBoundsForClientView() const {
77 gfx::Rect client_bounds = bounds(); 70 gfx::Rect client_bounds = bounds();
(...skipping 20 matching lines...) Expand all
98 } 91 }
99 92
100 void ActivityFrameView::GetWindowMask(const gfx::Size& size, 93 void ActivityFrameView::GetWindowMask(const gfx::Size& size,
101 gfx::Path* window_mask) { 94 gfx::Path* window_mask) {
102 } 95 }
103 96
104 void ActivityFrameView::ResetWindowControls() { 97 void ActivityFrameView::ResetWindowControls() {
105 } 98 }
106 99
107 void ActivityFrameView::UpdateWindowIcon() { 100 void ActivityFrameView::UpdateWindowIcon() {
108 if (!view_model_->UsesFrame()) 101 icon_->SetImage(view_model_->GetIcon());
109 return;
110
111 SkColor bgcolor = view_model_->GetRepresentativeColor();
112 set_background(views::Background::CreateSolidBackground(bgcolor));
113 title_->SetBackgroundColor(bgcolor);
114 SchedulePaint();
sadrul 2014/09/07 05:39:18 You need to keep this here. See https://codereview
pkotwicz 2014/09/08 21:36:17 You're right. Thanks for catching this!
115 } 102 }
116 103
117 void ActivityFrameView::UpdateWindowTitle() { 104 void ActivityFrameView::UpdateWindowTitle() {
105 // The activity has a frame in overview mode regardless of the value of
106 // ActivityViewModel::UsesFrame().
107 SkColor bgcolor = view_model_->GetRepresentativeColor();
108 set_background(views::Background::CreateSolidBackground(bgcolor));
109
118 if (!view_model_->UsesFrame()) 110 if (!view_model_->UsesFrame())
119 return; 111 return;
112 title_->SetBackgroundColor(bgcolor);
120 title_->SetText(frame_->widget_delegate()->GetWindowTitle()); 113 title_->SetText(frame_->widget_delegate()->GetWindowTitle());
121 Layout(); 114 Layout();
122 } 115 }
123 116
124 gfx::Size ActivityFrameView::GetPreferredSize() const { 117 gfx::Size ActivityFrameView::GetPreferredSize() const {
125 gfx::Size pref = frame_->client_view()->GetPreferredSize(); 118 gfx::Size pref = frame_->client_view()->GetPreferredSize();
126 gfx::Rect bounds(0, 0, pref.width(), pref.height()); 119 gfx::Rect bounds(0, 0, pref.width(), pref.height());
127 return frame_->non_client_view() 120 return frame_->non_client_view()
128 ->GetWindowBoundsForClientBounds(bounds) 121 ->GetWindowBoundsForClientBounds(bounds)
129 .size(); 122 .size();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 return in_overview_ ? kOverviewBorderThickness : 0; 200 return in_overview_ ? kOverviewBorderThickness : 0;
208 } 201 }
209 202
210 int ActivityFrameView::NonClientTopBorderHeight() const { 203 int ActivityFrameView::NonClientTopBorderHeight() const {
211 if (frame_->IsFullscreen() || !view_model_->UsesFrame()) 204 if (frame_->IsFullscreen() || !view_model_->UsesFrame())
212 return in_overview_ ? kOverviewShortTitleHeight : 0; 205 return in_overview_ ? kOverviewShortTitleHeight : 0;
213 return in_overview_ ? kOverviewTitleHeight : kDefaultTitleHeight; 206 return in_overview_ ? kOverviewTitleHeight : kDefaultTitleHeight;
214 } 207 }
215 208
216 } // namespace athena 209 } // namespace athena
OLDNEW
« no previous file with comments | « no previous file | athena/activity/activity_view_manager_impl.cc » ('j') | athena/content/web_activity.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698