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

Side by Side Diff: ash/devtools/ash_devtools_unittest.cc

Issue 2776543002: Create a unified UIElement interface for Widget, View and Window. (Closed)
Patch Set: . Created 3 years, 7 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
« no previous file with comments | « ash/devtools/ash_devtools_dom_agent.cc ('k') | ash/devtools/ui_element.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ash/devtools/ash_devtools_css_agent.h" 5 #include "ash/devtools/ash_devtools_css_agent.h"
6 #include "ash/devtools/ash_devtools_dom_agent.h" 6 #include "ash/devtools/ash_devtools_dom_agent.h"
7 #include "ash/devtools/ui_element.h"
8 #include "ash/devtools/window_element.h"
7 #include "ash/public/cpp/shell_window_ids.h" 9 #include "ash/public/cpp/shell_window_ids.h"
8 #include "ash/root_window_controller.h" 10 #include "ash/root_window_controller.h"
9 #include "ash/shell.h" 11 #include "ash/shell.h"
10 #include "ash/test/ash_test_base.h" 12 #include "ash/test/ash_test_base.h"
11 #include "ash/wm/widget_finder.h" 13 #include "ash/wm/widget_finder.h"
12 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
13 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
14 #include "ui/display/display.h" 16 #include "ui/display/display.h"
15 #include "ui/views/background.h" 17 #include "ui/views/background.h"
16 #include "ui/views/widget/native_widget_private.h" 18 #include "ui/views/widget/native_widget_private.h"
17 #include "ui/views/widget/widget.h" 19 #include "ui/views/widget/widget.h"
18 20
19 namespace ash { 21 namespace ash {
20 namespace { 22 namespace {
23
21 using namespace ui::devtools::protocol; 24 using namespace ui::devtools::protocol;
25
22 const int kDefaultChildNodeCount = -1; 26 const int kDefaultChildNodeCount = -1;
23 const SkColor kBackgroundColor = SK_ColorRED; 27 const SkColor kBackgroundColor = SK_ColorRED;
24 const SkColor kBorderColor = SK_ColorBLUE; 28 const SkColor kBorderColor = SK_ColorBLUE;
25 29
26 class TestView : public views::View { 30 class TestView : public views::View {
27 public: 31 public:
28 TestView(const char* name) : views::View(), name_(name) {} 32 TestView(const char* name) : views::View(), name_(name) {}
29 33
30 const char* GetClassName() const override { return name_; } 34 const char* GetClassName() const override { return name_; }
31 35
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 525
522 TEST_F(AshDevToolsTest, ViewRearranged) { 526 TEST_F(AshDevToolsTest, ViewRearranged) {
523 std::unique_ptr<views::Widget> widget( 527 std::unique_ptr<views::Widget> widget(
524 CreateTestWidget(gfx::Rect(1, 1, 1, 1))); 528 CreateTestWidget(gfx::Rect(1, 1, 1, 1)));
525 aura::Window* window = widget->GetNativeWindow(); 529 aura::Window* window = widget->GetNativeWindow();
526 widget->Show(); 530 widget->Show();
527 views::View* root_view = widget->GetRootView(); 531 views::View* root_view = widget->GetRootView();
528 views::View* parent_view = new views::View; 532 views::View* parent_view = new views::View;
529 views::View* target_view = new views::View; 533 views::View* target_view = new views::View;
530 views::View* child_view = new views::View; 534 views::View* child_view = new views::View;
535 views::View* child_view_1 = new views::View;
536
531 root_view->AddChildView(parent_view); 537 root_view->AddChildView(parent_view);
532 root_view->AddChildView(target_view); 538 root_view->AddChildView(target_view);
533 parent_view->AddChildView(child_view); 539 parent_view->AddChildView(child_view);
540 parent_view->AddChildView(child_view_1);
534 541
535 // Initialize DOMAgent 542 // Initialize DOMAgent
536 std::unique_ptr<ui::devtools::protocol::DOM::Node> root; 543 std::unique_ptr<ui::devtools::protocol::DOM::Node> root;
537 dom_agent()->getDocument(&root); 544 dom_agent()->getDocument(&root);
538 545
539 DOM::Node* parent_node = FindInRoot(window, root.get()); 546 DOM::Node* parent_node = FindInRoot(window, root.get());
540 ASSERT_TRUE(parent_node); 547 ASSERT_TRUE(parent_node);
541 DOM::Node* widget_node = parent_node->getChildren(nullptr)->get(0); 548 DOM::Node* widget_node = parent_node->getChildren(nullptr)->get(0);
542 DOM::Node* root_view_node = widget_node->getChildren(nullptr)->get(0); 549 DOM::Node* root_view_node = widget_node->getChildren(nullptr)->get(0);
543 Array<DOM::Node>* root_view_children = root_view_node->getChildren(nullptr); 550 Array<DOM::Node>* root_view_children = root_view_node->getChildren(nullptr);
544 ASSERT_TRUE(root_view_children); 551 ASSERT_TRUE(root_view_children);
545 size_t root_children_size = root_view_children->length(); 552 size_t root_children_size = root_view_children->length();
546 ASSERT_TRUE(root_children_size >= 2); 553 ASSERT_TRUE(root_children_size >= 2);
547 DOM::Node* parent_view_node = root_view_children->get(root_children_size - 2); 554 DOM::Node* parent_view_node = root_view_children->get(root_children_size - 2);
548 DOM::Node* target_view_node = root_view_children->get(root_children_size - 1); 555 DOM::Node* target_view_node = root_view_children->get(root_children_size - 1);
549 DOM::Node* child_view_node = parent_view_node->getChildren(nullptr)->get(0); 556 DOM::Node* child_view_node = parent_view_node->getChildren(nullptr)->get(0);
557 DOM::Node* child_view_node_1 = parent_view_node->getChildren(nullptr)->get(1);
550 558
551 Compare(parent_view, parent_view_node); 559 Compare(parent_view, parent_view_node);
552 Compare(target_view, target_view_node); 560 Compare(target_view, target_view_node);
553 Compare(child_view, child_view_node); 561 Compare(child_view, child_view_node);
562 Compare(child_view_1, child_view_node_1);
563
564 ASSERT_NE(child_view_node->getNodeId(), child_view_node_1->getNodeId());
565
566 // Reorder child_view_1 from index 1 to 0 in view::Views tree. This makes DOM
567 // tree remove view node at position 1 and insert it at position 0.
568 parent_view->ReorderChildView(child_view_1, 0);
569 ExpectChildNodeRemoved(parent_view_node->getNodeId(),
570 child_view_node_1->getNodeId());
571 ExpectChildNodeInserted(parent_view_node->getNodeId(), 0);
572
554 target_view->AddChildView(child_view); 573 target_view->AddChildView(child_view);
555 ExpectChildNodeRemoved(parent_view_node->getNodeId(), 574 ExpectChildNodeRemoved(parent_view_node->getNodeId(),
556 child_view_node->getNodeId()); 575 child_view_node->getNodeId());
557 ExpectChildNodeInserted(target_view_node->getNodeId(), 0); 576 ExpectChildNodeInserted(target_view_node->getNodeId(), 0);
558 } 577 }
559 578
560 TEST_F(AshDevToolsTest, ViewRearrangedRemovedAndInserted) { 579 TEST_F(AshDevToolsTest, ViewRearrangedRemovedAndInserted) {
561 std::unique_ptr<views::Widget> widget( 580 std::unique_ptr<views::Widget> widget(
562 CreateTestWidget(gfx::Rect(1, 1, 1, 1))); 581 CreateTestWidget(gfx::Rect(1, 1, 1, 1)));
563 aura::Window* window = widget->GetNativeWindow(); 582 aura::Window* window = widget->GetNativeWindow();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 HighlightNode(root_view_node->getNodeId()); 646 HighlightNode(root_view_node->getNodeId());
628 ExpectHighlighted(root_view->GetBoundsInScreen(), 0); 647 ExpectHighlighted(root_view->GetBoundsInScreen(), 0);
629 648
630 HideHighlight(0); 649 HideHighlight(0);
631 650
632 // Highlight non-existent node 651 // Highlight non-existent node
633 HighlightNode(10000); 652 HighlightNode(10000);
634 EXPECT_FALSE(GetHighlightingWindow(0)->IsVisible()); 653 EXPECT_FALSE(GetHighlightingWindow(0)->IsVisible());
635 } 654 }
636 655
656 int GetNodeIdFromWindow(devtools::UIElement* ui_element, aura::Window* window) {
657 for (auto* child : ui_element->children()) {
658 if (child->type() == devtools::UIElementType::WINDOW &&
659 static_cast<devtools::WindowElement*>(child)->window() == window) {
660 return child->node_id();
661 }
662 }
663 for (auto* child : ui_element->children()) {
664 if (child->type() == devtools::UIElementType::WINDOW) {
665 int node_id = GetNodeIdFromWindow(child, window);
666 if (node_id > 0)
667 return node_id;
668 }
669 }
670 return 0;
671 }
672
637 TEST_F(AshDevToolsTest, MultipleDisplayHighlight) { 673 TEST_F(AshDevToolsTest, MultipleDisplayHighlight) {
638 UpdateDisplay("300x400,500x500"); 674 UpdateDisplay("300x400,500x500");
639 675
640 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 676 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
641 std::unique_ptr<aura::Window> window( 677 std::unique_ptr<aura::Window> window(
642 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40))); 678 CreateTestWindowInShellWithBounds(gfx::Rect(1, 2, 30, 40)));
643 679
644 std::unique_ptr<ui::devtools::protocol::DOM::Node> root; 680 std::unique_ptr<ui::devtools::protocol::DOM::Node> root;
645 dom_agent()->getDocument(&root); 681 dom_agent()->getDocument(&root);
646 682
647 EXPECT_EQ(root_windows[0], window->GetRootWindow()); 683 EXPECT_EQ(root_windows[0], window->GetRootWindow());
648 HighlightNode(dom_agent()->GetNodeIdFromWindow(window.get())); 684 HighlightNode(
685 GetNodeIdFromWindow(dom_agent()->window_element_root(), window.get()));
649 ExpectHighlighted(window->GetBoundsInScreen(), 0); 686 ExpectHighlighted(window->GetBoundsInScreen(), 0);
650 687
651 window->SetBoundsInScreen(gfx::Rect(500, 0, 50, 50), GetSecondaryDisplay()); 688 window->SetBoundsInScreen(gfx::Rect(500, 0, 50, 50), GetSecondaryDisplay());
652 EXPECT_EQ(root_windows[1], window->GetRootWindow()); 689 EXPECT_EQ(root_windows[1], window->GetRootWindow());
653 HighlightNode(dom_agent()->GetNodeIdFromWindow(window.get())); 690 HighlightNode(
691 GetNodeIdFromWindow(dom_agent()->window_element_root(), window.get()));
654 ExpectHighlighted(window->GetBoundsInScreen(), 1); 692 ExpectHighlighted(window->GetBoundsInScreen(), 1);
655 } 693 }
656 694
657 TEST_F(AshDevToolsTest, WindowWidgetViewGetMatchedStylesForNode) { 695 TEST_F(AshDevToolsTest, WindowWidgetViewGetMatchedStylesForNode) {
658 std::unique_ptr<views::Widget> widget( 696 std::unique_ptr<views::Widget> widget(
659 CreateTestWidget(gfx::Rect(1, 1, 1, 1))); 697 CreateTestWidget(gfx::Rect(1, 1, 1, 1)));
660 aura::Window* parent_window = widget->GetNativeWindow(); 698 aura::Window* parent_window = widget->GetNativeWindow();
661 std::unique_ptr<aura::Window> window(CreateChildWindow(parent_window)); 699 std::unique_ptr<aura::Window> window(CreateChildWindow(parent_window));
662 gfx::Rect window_bounds(2, 2, 3, 3); 700 gfx::Rect window_bounds(2, 2, 3, 3);
663 gfx::Rect widget_bounds(50, 50, 100, 75); 701 gfx::Rect widget_bounds(50, 50, 100, 75);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 SetStyleTexts(root_view_node, "\nheight: 73;\n ", true); 815 SetStyleTexts(root_view_node, "\nheight: 73;\n ", true);
778 EXPECT_EQ(gfx::Rect(25, 35, 45, 73), root_view->bounds()); 816 EXPECT_EQ(gfx::Rect(25, 35, 45, 73), root_view->bounds());
779 817
780 SetStyleTexts(root_view_node, "\nx: 10; y: 23; width: 52;\nvisibility: 1;\n", 818 SetStyleTexts(root_view_node, "\nx: 10; y: 23; width: 52;\nvisibility: 1;\n",
781 true); 819 true);
782 EXPECT_EQ(gfx::Rect(10, 23, 52, 73), root_view->bounds()); 820 EXPECT_EQ(gfx::Rect(10, 23, 52, 73), root_view->bounds());
783 EXPECT_TRUE(root_view->visible()); 821 EXPECT_TRUE(root_view->visible());
784 } 822 }
785 823
786 } // namespace ash 824 } // namespace ash
OLDNEW
« no previous file with comments | « ash/devtools/ash_devtools_dom_agent.cc ('k') | ash/devtools/ui_element.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698