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

Side by Side Diff: ash/common/devtools/ash_devtools_css_agent.cc

Issue 2486543003: Add CSS agent for various window/widget/view attributes in devtools (Closed)
Patch Set: sadruls comments Created 4 years, 1 month 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ash/common/devtools/ash_devtools_css_agent.h"
6
7 #include "ash/common/wm_window.h"
8
9 namespace ash {
10 namespace devtools {
11
12 namespace {
13 using namespace ui::devtools::protocol;
14
15 std::unique_ptr<CSS::CSSProperty> BuildCSSProperty(const std::string& name,
16 int value) {
17 return CSS::CSSProperty::create()
18 .setName(name)
19 .setValue(base::IntToString(value))
20 .build();
21 }
22
23 std::unique_ptr<Array<CSS::CSSProperty>> BuildBoundsCSSPropertyArray(
24 const gfx::Rect& bounds) {
25 auto cssProperties = Array<CSS::CSSProperty>::create();
26 cssProperties->addItem(BuildCSSProperty("height", bounds.height()));
27 cssProperties->addItem(BuildCSSProperty("width", bounds.width()));
28 cssProperties->addItem(BuildCSSProperty("x", bounds.x()));
29 cssProperties->addItem(BuildCSSProperty("y", bounds.y()));
30 return cssProperties;
31 }
32
33 std::unique_ptr<CSS::CSSStyle> BuildCSSStyle(
34 std::unique_ptr<Array<CSS::CSSProperty>> cssProperties) {
35 return CSS::CSSStyle::create()
36 .setCssProperties(std::move(cssProperties))
37 .setShorthandEntries(Array<std::string>::create())
38 .build();
39 }
40
41 std::unique_ptr<CSS::CSSStyle> BuildCSSStyleForBounds(const gfx::Rect& bounds) {
42 return BuildCSSStyle(BuildBoundsCSSPropertyArray(bounds));
43 }
44
45 std::unique_ptr<CSS::CSSStyle> BuildStyles(WmWindow* window) {
46 return BuildCSSStyleForBounds(window->GetBounds());
47 }
48
49 std::unique_ptr<CSS::CSSStyle> BuildStyles(views::Widget* widget) {
50 return BuildCSSStyleForBounds(widget->GetWindowBoundsInScreen());
51 }
52
53 std::unique_ptr<CSS::CSSStyle> BuildStyles(views::View* view) {
54 return BuildCSSStyleForBounds(view->bounds());
55 }
56
57 } // namespace
58
59 AshDevToolsCSSAgent::AshDevToolsCSSAgent(AshDevToolsDOMAgent* dom_agent)
60 : dom_agent_(dom_agent) {
61 DCHECK(dom_agent_);
62 }
63
64 AshDevToolsCSSAgent::~AshDevToolsCSSAgent() {}
65
66 ui::devtools::protocol::Response AshDevToolsCSSAgent::getMatchedStylesForNode(
67 int nodeId,
68 ui::devtools::protocol::Maybe<ui::devtools::protocol::CSS::CSSStyle>*
69 inlineStyle) {
70 *inlineStyle = GetStylesForNode(nodeId);
71 return ui::devtools::protocol::Response::OK();
72 }
73
74 std::unique_ptr<ui::devtools::protocol::CSS::CSSStyle>
75 AshDevToolsCSSAgent::GetStylesForNode(int nodeId) {
76 WmWindow* window = dom_agent_->GetWindowFromNodeId(nodeId);
77 if (window)
78 return BuildStyles(window);
79
80 views::Widget* widget = dom_agent_->GetWidgetFromNodeId(nodeId);
81 if (widget)
82 return BuildStyles(widget);
83
84 views::View* view = dom_agent_->GetViewFromNodeId(nodeId);
85 if (view)
86 return BuildStyles(view);
87
88 NOTREACHED();
89 return nullptr;
90 }
91
92 } // namespace devtools
93 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/devtools/ash_devtools_css_agent.h ('k') | ash/common/devtools/ash_devtools_dom_agent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698