Index: components/html_viewer/ax_provider_impl_unittest.cc |
diff --git a/components/html_viewer/ax_provider_impl_unittest.cc b/components/html_viewer/ax_provider_impl_unittest.cc |
deleted file mode 100644 |
index 2d60f1eced8922d5835cff41a6435663e471a182..0000000000000000000000000000000000000000 |
--- a/components/html_viewer/ax_provider_impl_unittest.cc |
+++ /dev/null |
@@ -1,198 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/html_viewer/ax_provider_impl.h" |
- |
-#include <stddef.h> |
-#include <stdint.h> |
-#include <utility> |
- |
-#include "base/bind.h" |
-#include "base/message_loop/message_loop.h" |
-#include "components/html_viewer/blink_platform_impl.h" |
-#include "components/scheduler/renderer/renderer_scheduler.h" |
-#include "gin/v8_initializer.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/WebKit/public/platform/WebData.h" |
-#include "third_party/WebKit/public/platform/WebURL.h" |
-#include "third_party/WebKit/public/web/WebFrameClient.h" |
-#include "third_party/WebKit/public/web/WebKit.h" |
-#include "third_party/WebKit/public/web/WebLocalFrame.h" |
-#include "third_party/WebKit/public/web/WebView.h" |
-#include "third_party/WebKit/public/web/WebViewClient.h" |
-#include "url/gurl.h" |
- |
-using blink::WebData; |
-using blink::WebLocalFrame; |
-using blink::WebFrameClient; |
-using blink::WebURL; |
-using blink::WebView; |
-using blink::WebViewClient; |
- |
-using mojo::Array; |
-using mojo::AxNode; |
-using mojo::AxNodePtr; |
- |
-namespace { |
- |
-class TestWebFrameClient : public WebFrameClient { |
- public: |
- ~TestWebFrameClient() override {} |
- void didStopLoading() override { |
- base::MessageLoop::current()->QuitWhenIdle(); |
- } |
-}; |
- |
-class TestWebViewClient : public WebViewClient { |
- public: |
- bool allowsBrokenNullLayerTreeView() const override { return true; } |
- virtual ~TestWebViewClient() {} |
-}; |
- |
-class AxProviderImplTest : public testing::Test { |
- public: |
- AxProviderImplTest() |
- : message_loop_(new base::MessageLoopForUI()), |
- renderer_scheduler_(scheduler::RendererScheduler::Create()) { |
-#if defined(V8_USE_EXTERNAL_STARTUP_DATA) |
- gin::V8Initializer::LoadV8Snapshot(); |
- gin::V8Initializer::LoadV8Natives(); |
-#endif |
- blink::initialize( |
- new html_viewer::BlinkPlatformImpl(nullptr, nullptr, |
- renderer_scheduler_.get())); |
- } |
- |
- ~AxProviderImplTest() override { |
- renderer_scheduler_->Shutdown(); |
- message_loop_.reset(); |
- blink::shutdown(); |
- } |
- |
- private: |
- scoped_ptr<base::MessageLoopForUI> message_loop_; |
- scoped_ptr<scheduler::RendererScheduler> renderer_scheduler_; |
-}; |
- |
-struct NodeCatcher { |
- void OnNodes(Array<AxNodePtr> nodes) { this->nodes = std::move(nodes); } |
- Array<AxNodePtr> nodes; |
-}; |
- |
-AxNodePtr CreateNode(int id, |
- int parent_id, |
- int next_sibling_id, |
- const mojo::RectPtr& bounds, |
- const std::string& url, |
- const std::string& text) { |
- AxNodePtr node(AxNode::New()); |
- node->id = id; |
- node->parent_id = parent_id; |
- node->next_sibling_id = next_sibling_id; |
- node->bounds = bounds.Clone(); |
- |
- if (!url.empty()) { |
- node->link = mojo::AxLink::New(); |
- node->link->url = url; |
- } |
- if (!text.empty()) { |
- node->text = mojo::AxText::New(); |
- node->text->content = text; |
- } |
- return node; |
-} |
- |
-} // namespace |
- |
-TEST_F(AxProviderImplTest, Basic) { |
- TestWebViewClient web_view_client; |
- TestWebFrameClient web_frame_client; |
- WebView* view = WebView::create(&web_view_client); |
- view->setMainFrame(WebLocalFrame::create(blink::WebTreeScopeType::Document, |
- &web_frame_client)); |
- view->mainFrame()->loadHTMLString( |
- WebData( |
- "<html><body>foo<a " |
- "href='http://monkey.net'>bar</a>baz</body></html>"), |
- WebURL(GURL("http://someplace.net"))); |
- base::MessageLoop::current()->Run(); |
- |
- mojo::AxProviderPtr service_ptr; |
- html_viewer::AxProviderImpl ax_provider_impl(view, |
- mojo::GetProxy(&service_ptr)); |
- NodeCatcher catcher; |
- ax_provider_impl.GetTree( |
- base::Bind(&NodeCatcher::OnNodes, base::Unretained(&catcher))); |
- |
- std::map<uint32_t, AxNode*> lookup; |
- for (size_t i = 0; i < catcher.nodes.size(); ++i) { |
- auto& node = catcher.nodes[i]; |
- lookup[node->id] = node.get(); |
- } |
- |
- typedef decltype(lookup)::value_type MapEntry; |
- auto is_link = [](MapEntry pair) { return !pair.second->link.is_null(); }; |
- auto is_text = [](MapEntry pair, const char* content) { |
- return !pair.second->text.is_null() && |
- pair.second->text->content.To<std::string>() == content; |
- }; |
- auto is_foo = [&is_text](MapEntry pair) { return is_text(pair, "foo"); }; |
- auto is_bar = [&is_text](MapEntry pair) { return is_text(pair, "bar"); }; |
- auto is_baz = [&is_text](MapEntry pair) { return is_text(pair, "baz"); }; |
- |
- EXPECT_EQ(1, std::count_if(lookup.begin(), lookup.end(), is_link)); |
- EXPECT_EQ(1, std::count_if(lookup.begin(), lookup.end(), is_foo)); |
- EXPECT_EQ(1, std::count_if(lookup.begin(), lookup.end(), is_bar)); |
- EXPECT_EQ(1, std::count_if(lookup.begin(), lookup.end(), is_baz)); |
- |
- auto root = lookup[1u]; |
- auto link = std::find_if(lookup.begin(), lookup.end(), is_link)->second; |
- auto foo = std::find_if(lookup.begin(), lookup.end(), is_foo)->second; |
- auto bar = std::find_if(lookup.begin(), lookup.end(), is_bar)->second; |
- auto baz = std::find_if(lookup.begin(), lookup.end(), is_baz)->second; |
- |
- // Test basic content of each node. The properties we copy (like parent_id) |
- // here are tested differently below. |
- EXPECT_TRUE(CreateNode(root->id, 0, 0, root->bounds, "", "")->Equals(*root)); |
- EXPECT_TRUE(CreateNode(foo->id, foo->parent_id, 0, foo->bounds, "", "foo") |
- ->Equals(*foo)); |
- EXPECT_TRUE(CreateNode(bar->id, bar->parent_id, 0, bar->bounds, "", "bar") |
- ->Equals(*bar)); |
- EXPECT_TRUE(CreateNode(baz->id, baz->parent_id, 0, baz->bounds, "", "baz") |
- ->Equals(*baz)); |
- EXPECT_TRUE(CreateNode(link->id, |
- link->parent_id, |
- link->next_sibling_id, |
- link->bounds, |
- "http://monkey.net/", |
- "")->Equals(*link)); |
- |
- auto is_descendant_of = [&lookup](uint32_t id, uint32_t ancestor) { |
- for (; (id = lookup[id]->parent_id) != 0;) { |
- if (id == ancestor) |
- return true; |
- } |
- return false; |
- }; |
- |
- EXPECT_TRUE(is_descendant_of(bar->id, link->id)); |
- for (auto pair : lookup) { |
- AxNode* node = pair.second; |
- if (node != root) |
- EXPECT_TRUE(is_descendant_of(node->id, 1u)); |
- if (node != link && node != foo && node != bar && node != baz) { |
- EXPECT_TRUE(CreateNode(node->id, |
- node->parent_id, |
- node->next_sibling_id, |
- node->bounds, |
- "", |
- "")); |
- } |
- } |
- |
- // TODO(aa): Test bounds. |
- // TODO(aa): Test sibling ordering of foo/bar/baz. |
- |
- view->close(); |
-} |