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

Side by Side Diff: ui/views/controls/button/label_button_unittest.cc

Issue 2041033002: Moved ButtonInkDropDelegate logic into InkDropHostView and deleted InkDropDelegates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed merge conflict in custom_button.cc Created 4 years, 6 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/views/controls/button/label_button.h" 5 #include "ui/views/controls/button/label_button.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "third_party/skia/include/core/SkBitmap.h" 10 #include "third_party/skia/include/core/SkBitmap.h"
11 #include "ui/accessibility/ax_view_state.h" 11 #include "ui/accessibility/ax_view_state.h"
12 #include "ui/base/material_design/material_design_controller.h" 12 #include "ui/base/material_design/material_design_controller.h"
13 #include "ui/base/test/material_design_controller_test_api.h" 13 #include "ui/base/test/material_design_controller_test_api.h"
14 #include "ui/base/ui_base_switches.h" 14 #include "ui/base/ui_base_switches.h"
15 #include "ui/events/test/event_generator.h" 15 #include "ui/events/test/event_generator.h"
16 #include "ui/gfx/canvas.h" 16 #include "ui/gfx/canvas.h"
17 #include "ui/gfx/font_list.h" 17 #include "ui/gfx/font_list.h"
18 #include "ui/gfx/geometry/size.h" 18 #include "ui/gfx/geometry/size.h"
19 #include "ui/gfx/geometry/vector2d.h" 19 #include "ui/gfx/geometry/vector2d.h"
20 #include "ui/gfx/text_utils.h" 20 #include "ui/gfx/text_utils.h"
21 #include "ui/native_theme/native_theme.h" 21 #include "ui/native_theme/native_theme.h"
22 #include "ui/views/animation/button_ink_drop_delegate.h" 22 #include "ui/views/animation/test/ink_drop_host_view_test_api.h"
23 #include "ui/views/animation/test/test_ink_drop.h"
23 #include "ui/views/style/platform_style.h" 24 #include "ui/views/style/platform_style.h"
24 #include "ui/views/test/views_test_base.h" 25 #include "ui/views/test/views_test_base.h"
25 #include "ui/views/test/widget_test.h" 26 #include "ui/views/test/widget_test.h"
26 27
27 using base::ASCIIToUTF16; 28 using base::ASCIIToUTF16;
28 29
29 namespace { 30 namespace {
30 31
31 gfx::ImageSkia CreateTestImage(int width, int height) { 32 gfx::ImageSkia CreateTestImage(int width, int height) {
32 SkBitmap bitmap; 33 SkBitmap bitmap;
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 default_after->SetIsDefault(true); 398 default_after->SetIsDefault(true);
398 EXPECT_EQ(styled_highlight_text_color_, 399 EXPECT_EQ(styled_highlight_text_color_,
399 default_after->label()->enabled_color()); 400 default_after->label()->enabled_color());
400 401
401 // Test becoming default before adding to the Widget. 402 // Test becoming default before adding to the Widget.
402 TestLabelButton* default_before = AddStyledButton("OK", true); 403 TestLabelButton* default_before = AddStyledButton("OK", true);
403 EXPECT_EQ(styled_highlight_text_color_, 404 EXPECT_EQ(styled_highlight_text_color_,
404 default_before->label()->enabled_color()); 405 default_before->label()->enabled_color());
405 } 406 }
406 407
407 // A ButtonInkDropDelegate that tracks the last hover state requested.
408 class TestButtonInkDropDelegate : public ButtonInkDropDelegate {
409 public:
410 TestButtonInkDropDelegate(InkDropHost* ink_drop_host, View* view)
411 : ButtonInkDropDelegate(ink_drop_host, view), is_hovered_(false) {}
412
413 ~TestButtonInkDropDelegate() override {}
414
415 bool is_hovered() const { return is_hovered_; }
416
417 // ButtonInkDropDelegate:
418 void SetHovered(bool is_hovered) override {
419 is_hovered_ = is_hovered;
420 ButtonInkDropDelegate::SetHovered(is_hovered);
421 }
422
423 private:
424 // The last |is_hover| value passed to SetHovered().
425 bool is_hovered_;
426
427 DISALLOW_COPY_AND_ASSIGN(TestButtonInkDropDelegate);
428 };
429
430 // A generic LabelButton configured with an |InkDropDelegate|.
431 class InkDropLabelButton : public LabelButton {
432 public:
433 InkDropLabelButton()
434 : LabelButton(nullptr, base::string16()),
435 test_ink_drop_delegate_(new TestButtonInkDropDelegate(this, this)) {
436 set_ink_drop_delegate(base::WrapUnique(test_ink_drop_delegate_));
437 }
438
439 ~InkDropLabelButton() override {}
440
441 TestButtonInkDropDelegate* test_ink_drop_delegate() {
442 return test_ink_drop_delegate_;
443 }
444
445 private:
446 // Weak pointer.
447 TestButtonInkDropDelegate* test_ink_drop_delegate_;
448
449 DISALLOW_COPY_AND_ASSIGN(InkDropLabelButton);
450 };
451
452 // Test fixture for a LabelButton that has an ink drop configured. 408 // Test fixture for a LabelButton that has an ink drop configured.
453 class InkDropLabelButtonTest : public ViewsTestBase { 409 class InkDropLabelButtonTest : public ViewsTestBase {
454 public: 410 public:
455 InkDropLabelButtonTest() {} 411 InkDropLabelButtonTest() {}
456 412
457 // ViewsTestBase: 413 // ViewsTestBase:
458 void SetUp() override { 414 void SetUp() override {
459 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 415 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
460 switches::kTopChromeMD, switches::kTopChromeMDMaterial); 416 switches::kTopChromeMD, switches::kTopChromeMDMaterial);
461 ViewsTestBase::SetUp(); 417 ViewsTestBase::SetUp();
462 418
463 // Create a widget so that the CustomButton can query the hover state 419 // Create a widget so that the CustomButton can query the hover state
464 // correctly. 420 // correctly.
465 widget_.reset(new Widget); 421 widget_.reset(new Widget);
466 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); 422 Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
467 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 423 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
468 params.bounds = gfx::Rect(0, 0, 20, 20); 424 params.bounds = gfx::Rect(0, 0, 20, 20);
469 widget_->Init(params); 425 widget_->Init(params);
470 widget_->Show(); 426 widget_->Show();
471 427
472 button_ = new InkDropLabelButton(); 428 button_ = new LabelButton(nullptr, base::string16());
429
430 test_ink_drop_ = new test::TestInkDrop();
431 test::InkDropHostViewTestApi(button_).SetInkDrop(
432 base::WrapUnique(test_ink_drop_));
433
473 widget_->SetContentsView(button_); 434 widget_->SetContentsView(button_);
474 } 435 }
475 436
476 void TearDown() override { 437 void TearDown() override {
477 widget_.reset(); 438 widget_.reset();
478 ViewsTestBase::TearDown(); 439 ViewsTestBase::TearDown();
479 ui::test::MaterialDesignControllerTestAPI::Uninitialize(); 440 ui::test::MaterialDesignControllerTestAPI::Uninitialize();
480 } 441 }
481 442
482 protected: 443 protected:
483 // Required to host the test target. 444 // Required to host the test target.
484 std::unique_ptr<Widget> widget_; 445 std::unique_ptr<Widget> widget_;
485 446
486 // The test target. 447 // The test target.
487 InkDropLabelButton* button_ = nullptr; 448 LabelButton* button_ = nullptr;
449
450 // Weak ptr, |button_| owns the instance.
451 test::TestInkDrop* test_ink_drop_ = nullptr;
488 452
489 private: 453 private:
490 DISALLOW_COPY_AND_ASSIGN(InkDropLabelButtonTest); 454 DISALLOW_COPY_AND_ASSIGN(InkDropLabelButtonTest);
491 }; 455 };
492 456
493 TEST_F(InkDropLabelButtonTest, HoverStateAfterMouseEnterAndExitEvents) { 457 TEST_F(InkDropLabelButtonTest, HoverStateAfterMouseEnterAndExitEvents) {
494 ui::test::EventGenerator event_generator(GetContext(), 458 ui::test::EventGenerator event_generator(GetContext(),
495 widget_->GetNativeWindow()); 459 widget_->GetNativeWindow());
496 const gfx::Point out_of_bounds_point(button_->bounds().bottom_right() + 460 const gfx::Point out_of_bounds_point(button_->bounds().bottom_right() +
497 gfx::Vector2d(1, 1)); 461 gfx::Vector2d(1, 1));
498 const gfx::Point in_bounds_point(button_->bounds().CenterPoint()); 462 const gfx::Point in_bounds_point(button_->bounds().CenterPoint());
499 463
500 event_generator.MoveMouseTo(out_of_bounds_point); 464 event_generator.MoveMouseTo(out_of_bounds_point);
501 EXPECT_FALSE(button_->test_ink_drop_delegate()->is_hovered()); 465 EXPECT_FALSE(test_ink_drop_->is_hovered());
502 466
503 event_generator.MoveMouseTo(in_bounds_point); 467 event_generator.MoveMouseTo(in_bounds_point);
504 EXPECT_TRUE(button_->test_ink_drop_delegate()->is_hovered()); 468 EXPECT_TRUE(test_ink_drop_->is_hovered());
505 469
506 event_generator.MoveMouseTo(out_of_bounds_point); 470 event_generator.MoveMouseTo(out_of_bounds_point);
507 EXPECT_FALSE(button_->test_ink_drop_delegate()->is_hovered()); 471 EXPECT_FALSE(test_ink_drop_->is_hovered());
508 } 472 }
509 473
510 // Verifies the target event handler View is the |LabelButton| and not any of 474 // Verifies the target event handler View is the |LabelButton| and not any of
511 // the child Views. 475 // the child Views.
512 TEST_F(InkDropLabelButtonTest, TargetEventHandler) { 476 TEST_F(InkDropLabelButtonTest, TargetEventHandler) {
513 View* target_view = widget_->GetRootView()->GetEventHandlerForPoint( 477 View* target_view = widget_->GetRootView()->GetEventHandlerForPoint(
514 button_->bounds().CenterPoint()); 478 button_->bounds().CenterPoint());
515 EXPECT_EQ(button_, target_view); 479 EXPECT_EQ(button_, target_view);
516 } 480 }
517 481
518 } // namespace views 482 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/button/custom_button_unittest.cc ('k') | ui/views/controls/button/md_text_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698