| OLD | NEW |
| 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 "components/html_viewer/ax_provider_impl.h" | 5 #include "components/html_viewer/ax_provider_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 8 #include <stdint.h> |
| 9 |
| 7 #include "base/bind.h" | 10 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
| 9 #include "components/html_viewer/blink_platform_impl.h" | 12 #include "components/html_viewer/blink_platform_impl.h" |
| 10 #include "components/scheduler/renderer/renderer_scheduler.h" | 13 #include "components/scheduler/renderer/renderer_scheduler.h" |
| 11 #include "gin/v8_initializer.h" | 14 #include "gin/v8_initializer.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 13 #include "third_party/WebKit/public/platform/WebData.h" | 16 #include "third_party/WebKit/public/platform/WebData.h" |
| 14 #include "third_party/WebKit/public/platform/WebURL.h" | 17 #include "third_party/WebKit/public/platform/WebURL.h" |
| 15 #include "third_party/WebKit/public/web/WebFrameClient.h" | 18 #include "third_party/WebKit/public/web/WebFrameClient.h" |
| 16 #include "third_party/WebKit/public/web/WebKit.h" | 19 #include "third_party/WebKit/public/web/WebKit.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 WebURL(GURL("http://someplace.net"))); | 117 WebURL(GURL("http://someplace.net"))); |
| 115 base::MessageLoop::current()->Run(); | 118 base::MessageLoop::current()->Run(); |
| 116 | 119 |
| 117 mojo::AxProviderPtr service_ptr; | 120 mojo::AxProviderPtr service_ptr; |
| 118 html_viewer::AxProviderImpl ax_provider_impl(view, | 121 html_viewer::AxProviderImpl ax_provider_impl(view, |
| 119 mojo::GetProxy(&service_ptr)); | 122 mojo::GetProxy(&service_ptr)); |
| 120 NodeCatcher catcher; | 123 NodeCatcher catcher; |
| 121 ax_provider_impl.GetTree( | 124 ax_provider_impl.GetTree( |
| 122 base::Bind(&NodeCatcher::OnNodes, base::Unretained(&catcher))); | 125 base::Bind(&NodeCatcher::OnNodes, base::Unretained(&catcher))); |
| 123 | 126 |
| 124 std::map<uint32, AxNode*> lookup; | 127 std::map<uint32_t, AxNode*> lookup; |
| 125 for (size_t i = 0; i < catcher.nodes.size(); ++i) { | 128 for (size_t i = 0; i < catcher.nodes.size(); ++i) { |
| 126 auto& node = catcher.nodes[i]; | 129 auto& node = catcher.nodes[i]; |
| 127 lookup[node->id] = node.get(); | 130 lookup[node->id] = node.get(); |
| 128 } | 131 } |
| 129 | 132 |
| 130 typedef decltype(lookup)::value_type MapEntry; | 133 typedef decltype(lookup)::value_type MapEntry; |
| 131 auto is_link = [](MapEntry pair) { return !pair.second->link.is_null(); }; | 134 auto is_link = [](MapEntry pair) { return !pair.second->link.is_null(); }; |
| 132 auto is_text = [](MapEntry pair, const char* content) { | 135 auto is_text = [](MapEntry pair, const char* content) { |
| 133 return !pair.second->text.is_null() && | 136 return !pair.second->text.is_null() && |
| 134 pair.second->text->content.To<std::string>() == content; | 137 pair.second->text->content.To<std::string>() == content; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 157 ->Equals(*bar)); | 160 ->Equals(*bar)); |
| 158 EXPECT_TRUE(CreateNode(baz->id, baz->parent_id, 0, baz->bounds, "", "baz") | 161 EXPECT_TRUE(CreateNode(baz->id, baz->parent_id, 0, baz->bounds, "", "baz") |
| 159 ->Equals(*baz)); | 162 ->Equals(*baz)); |
| 160 EXPECT_TRUE(CreateNode(link->id, | 163 EXPECT_TRUE(CreateNode(link->id, |
| 161 link->parent_id, | 164 link->parent_id, |
| 162 link->next_sibling_id, | 165 link->next_sibling_id, |
| 163 link->bounds, | 166 link->bounds, |
| 164 "http://monkey.net/", | 167 "http://monkey.net/", |
| 165 "")->Equals(*link)); | 168 "")->Equals(*link)); |
| 166 | 169 |
| 167 auto is_descendant_of = [&lookup](uint32 id, uint32 ancestor) { | 170 auto is_descendant_of = [&lookup](uint32_t id, uint32_t ancestor) { |
| 168 for (; (id = lookup[id]->parent_id) != 0;) { | 171 for (; (id = lookup[id]->parent_id) != 0;) { |
| 169 if (id == ancestor) | 172 if (id == ancestor) |
| 170 return true; | 173 return true; |
| 171 } | 174 } |
| 172 return false; | 175 return false; |
| 173 }; | 176 }; |
| 174 | 177 |
| 175 EXPECT_TRUE(is_descendant_of(bar->id, link->id)); | 178 EXPECT_TRUE(is_descendant_of(bar->id, link->id)); |
| 176 for (auto pair : lookup) { | 179 for (auto pair : lookup) { |
| 177 AxNode* node = pair.second; | 180 AxNode* node = pair.second; |
| 178 if (node != root) | 181 if (node != root) |
| 179 EXPECT_TRUE(is_descendant_of(node->id, 1u)); | 182 EXPECT_TRUE(is_descendant_of(node->id, 1u)); |
| 180 if (node != link && node != foo && node != bar && node != baz) { | 183 if (node != link && node != foo && node != bar && node != baz) { |
| 181 EXPECT_TRUE(CreateNode(node->id, | 184 EXPECT_TRUE(CreateNode(node->id, |
| 182 node->parent_id, | 185 node->parent_id, |
| 183 node->next_sibling_id, | 186 node->next_sibling_id, |
| 184 node->bounds, | 187 node->bounds, |
| 185 "", | 188 "", |
| 186 "")); | 189 "")); |
| 187 } | 190 } |
| 188 } | 191 } |
| 189 | 192 |
| 190 // TODO(aa): Test bounds. | 193 // TODO(aa): Test bounds. |
| 191 // TODO(aa): Test sibling ordering of foo/bar/baz. | 194 // TODO(aa): Test sibling ordering of foo/bar/baz. |
| 192 | 195 |
| 193 view->close(); | 196 view->close(); |
| 194 } | 197 } |
| OLD | NEW |