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

Side by Side Diff: ui/arc/notification/arc_custom_notification_view.cc

Issue 2723143002: Add unittests of ArcCustomNotificationView (Closed)
Patch Set: Created 3 years, 9 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ui/arc/notification/arc_custom_notification_view.h" 5 #include "ui/arc/notification/arc_custom_notification_view.h"
6 6
7 #include "ash/wm/window_util.h" 7 #include "ash/wm/window_util.h"
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "components/exo/notification_surface.h" 10 #include "components/exo/notification_surface.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 193
194 void OnBlur() override { 194 void OnBlur() override {
195 message_center::PaddedButton::OnBlur(); 195 message_center::PaddedButton::OnBlur();
196 owner_->UpdateControlButtonsVisiblity(); 196 owner_->UpdateControlButtonsVisiblity();
197 } 197 }
198 198
199 private: 199 private:
200 ArcCustomNotificationView* const owner_; 200 ArcCustomNotificationView* const owner_;
201 }; 201 };
202 202
203 ArcCustomNotificationView::ArcCustomNotificationView( 203 // static
204 ArcCustomNotificationItem* item) 204 const char ArcCustomNotificationView::kViewClassName[] =
205 "ArcCustomNotificationView";
206
207 ArcCustomNotificationView::ArcCustomNotificationView(ArcNotificationItem* item)
205 : item_(item), 208 : item_(item),
206 notification_key_(item->notification_key()), 209 notification_key_(item->notification_key()),
207 event_forwarder_(new EventForwarder(this)) { 210 event_forwarder_(new EventForwarder(this)) {
208 SetFocusBehavior(FocusBehavior::ALWAYS); 211 SetFocusBehavior(FocusBehavior::ALWAYS);
209 212
210 item_->IncrementWindowRefCount(); 213 item_->IncrementWindowRefCount();
211 item_->AddObserver(this); 214 item_->AddObserver(this);
212 215
213 ArcNotificationSurfaceManager::Get()->AddObserver(this); 216 if (ArcNotificationSurfaceManager::Get()) {
214 exo::NotificationSurface* surface = 217 ArcNotificationSurfaceManager::Get()->AddObserver(this);
215 ArcNotificationSurfaceManager::Get()->GetSurface(notification_key_); 218 exo::NotificationSurface* surface =
216 if (surface) 219 ArcNotificationSurfaceManager::Get()->GetSurface(notification_key_);
217 OnNotificationSurfaceAdded(surface); 220 if (surface)
221 OnNotificationSurfaceAdded(surface);
222 }
218 223
219 // Create a layer as an anchor to insert surface copy during a slide. 224 // Create a layer as an anchor to insert surface copy during a slide.
220 SetPaintToLayer(); 225 SetPaintToLayer();
221 UpdatePreferredSize(); 226 UpdatePreferredSize();
222 } 227 }
223 228
224 ArcCustomNotificationView::~ArcCustomNotificationView() { 229 ArcCustomNotificationView::~ArcCustomNotificationView() {
225 SetSurface(nullptr); 230 SetSurface(nullptr);
226 if (item_) { 231 if (item_) {
227 item_->DecrementWindowRefCount(); 232 item_->DecrementWindowRefCount();
228 item_->RemoveObserver(this); 233 item_->RemoveObserver(this);
229 } 234 }
230 235
231 if (ArcNotificationSurfaceManager::Get()) 236 if (ArcNotificationSurfaceManager::Get())
232 ArcNotificationSurfaceManager::Get()->RemoveObserver(this); 237 ArcNotificationSurfaceManager::Get()->RemoveObserver(this);
233 } 238 }
234 239
240 const char* ArcCustomNotificationView::GetClassName() const {
241 return kViewClassName;
242 }
243
235 std::unique_ptr<message_center::CustomNotificationContentViewDelegate> 244 std::unique_ptr<message_center::CustomNotificationContentViewDelegate>
236 ArcCustomNotificationView::CreateContentViewDelegate() { 245 ArcCustomNotificationView::CreateContentViewDelegate() {
237 return base::MakeUnique<ArcCustomNotificationView::ContentViewDelegate>(this); 246 return base::MakeUnique<ArcCustomNotificationView::ContentViewDelegate>(this);
238 } 247 }
239 248
240 void ArcCustomNotificationView::CreateFloatingControlButtons() { 249 void ArcCustomNotificationView::CreateFloatingControlButtons() {
241 // Floating close button is a transient child of |surface_| and also part 250 // Floating close button is a transient child of |surface_| and also part
242 // of the hosting widget's focus chain. It could only be created when both 251 // of the hosting widget's focus chain. It could only be created when both
243 // are present. 252 // are present.
244 if (!surface_ || !GetWidget()) 253 if (!surface_ || !GetWidget())
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 368
360 UpdatePreferredSize(); 369 UpdatePreferredSize();
361 SchedulePaint(); 370 SchedulePaint();
362 } 371 }
363 372
364 void ArcCustomNotificationView::AttachSurface() { 373 void ArcCustomNotificationView::AttachSurface() {
365 if (!GetWidget()) 374 if (!GetWidget())
366 return; 375 return;
367 376
368 UpdatePreferredSize(); 377 UpdatePreferredSize();
369 Attach(surface_->window()); 378 surface_->AttachWindow(this);
370 379
371 // The texture for this window can be placed at subpixel position 380 // The texture for this window can be placed at subpixel position
372 // with fractional scale factor. Force to align it at the pixel 381 // with fractional scale factor. Force to align it at the pixel
373 // boundary here, and when layout is updated in Layout(). 382 // boundary here, and when layout is updated in Layout().
374 ash::wm::SnapWindowToPixelBoundary(surface_->window()); 383 ash::wm::SnapWindowToPixelBoundary(surface_->window());
375 384
376 // Creates slide helper after this view is added to its parent. 385 // Creates slide helper after this view is added to its parent.
377 slide_helper_.reset(new SlideHelper(this)); 386 slide_helper_.reset(new SlideHelper(this));
378 387
379 // Invokes Update() in case surface is attached during a slide. 388 // Invokes Update() in case surface is attached during a slide.
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 562
554 void ArcCustomNotificationView::OnNotificationSurfaceRemoved( 563 void ArcCustomNotificationView::OnNotificationSurfaceRemoved(
555 exo::NotificationSurface* surface) { 564 exo::NotificationSurface* surface) {
556 if (surface->notification_id() != notification_key_) 565 if (surface->notification_id() != notification_key_)
557 return; 566 return;
558 567
559 SetSurface(nullptr); 568 SetSurface(nullptr);
560 } 569 }
561 570
562 } // namespace arc 571 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698