| Index: chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
|
| deleted file mode 100644
|
| index a9b15a36f820e43b9601d819c7a1ad50cdffe848..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker_unittest.cc
|
| +++ /dev/null
|
| @@ -1,199 +0,0 @@
|
| -// Copyright 2015 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 "chrome/browser/extensions/api/declarative_content/declarative_content_css_condition_tracker.h"
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/scoped_vector.h"
|
| -#include "base/run_loop.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "content/public/browser/navigation_details.h"
|
| -#include "content/public/browser/render_view_host.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/test/browser_test_utils.h"
|
| -#include "content/public/test/mock_render_process_host.h"
|
| -#include "content/public/test/test_browser_thread_bundle.h"
|
| -#include "content/public/test/test_renderer_host.h"
|
| -#include "content/public/test/web_contents_tester.h"
|
| -#include "extensions/common/extension_messages.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace extensions {
|
| -
|
| -using testing::UnorderedElementsAreArray;
|
| -
|
| -class DeclarativeContentCssConditionTrackerTest : public testing::Test {
|
| - public:
|
| - DeclarativeContentCssConditionTrackerTest()
|
| - : profile_(new TestingProfile),
|
| - delegate_(web_contents_) {
|
| - }
|
| -
|
| - ~DeclarativeContentCssConditionTrackerTest() override {
|
| - web_contents_.clear();
|
| - // MockRenderProcessHosts are deleted from the message loop, and their
|
| - // deletion must complete before RenderViewHostTestEnabler's destructor is
|
| - // run.
|
| - base::RunLoop().RunUntilIdle();
|
| - }
|
| -
|
| - protected:
|
| - class Delegate : public DeclarativeContentCssConditionTrackerDelegate {
|
| - public:
|
| - Delegate(const ScopedVector<content::WebContents>& web_contents)
|
| - : web_contents_(web_contents),
|
| - evaluation_requests_(0) {
|
| - }
|
| -
|
| - int evaluation_requests() { return evaluation_requests_; }
|
| -
|
| - // DeclarativeContentCssConditionTrackerDelegate:
|
| - void RequestEvaluation(content::WebContents* contents) override {
|
| - ++evaluation_requests_;
|
| - }
|
| -
|
| - bool ShouldManageConditionsForBrowserContext(
|
| - content::BrowserContext* context) override {
|
| - return true;
|
| - }
|
| -
|
| - private:
|
| - // Reference to the test's WebContents vector.
|
| - const ScopedVector<content::WebContents>& web_contents_;
|
| - int evaluation_requests_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Delegate);
|
| - };
|
| -
|
| - // Creates a new DeclarativeContentCssConditionTracker and retains ownership.
|
| - DeclarativeContentCssConditionTracker* MakeTracker() {
|
| - trackers_.push_back(
|
| - new DeclarativeContentCssConditionTracker(profile(), delegate()));
|
| - return trackers_.back();
|
| - }
|
| -
|
| - // Creates a new WebContents and retains ownership.
|
| - content::WebContents* MakeTab() {
|
| - web_contents_.push_back(
|
| - content::WebContentsTester::CreateTestWebContents(profile_.get(),
|
| - nullptr));
|
| - return web_contents_.back();
|
| - }
|
| -
|
| - // Expect an ExtensionMsg_WatchPages message in |sink| with |selectors| as the
|
| - // param, after invoking |func|.
|
| - template <class Func>
|
| - void ExpectWatchPagesMessage(IPC::TestSink& sink,
|
| - const std::set<std::string>& selectors,
|
| - const Func& func) {
|
| - sink.ClearMessages();
|
| - func();
|
| - EXPECT_EQ(1u, sink.message_count());
|
| - const IPC::Message* message =
|
| - sink.GetUniqueMessageMatching(ExtensionMsg_WatchPages::ID);
|
| - ASSERT_TRUE(message);
|
| - ExtensionMsg_WatchPages::Param params;
|
| - ExtensionMsg_WatchPages::Read(message, ¶ms);
|
| - EXPECT_THAT(base::get<0>(params), UnorderedElementsAreArray(selectors));
|
| - }
|
| -
|
| - // Sends an OnWatchedPageChange message to the tab.
|
| - void SendOnWatchedPageChangeMessage(
|
| - content::WebContents* tab,
|
| - const std::vector<std::string>& selectors) {
|
| - ExtensionHostMsg_OnWatchedPageChange page_change(tab->GetRoutingID(),
|
| - selectors);
|
| - content::MockRenderProcessHost* process =
|
| - static_cast<content::MockRenderProcessHost*>(
|
| - tab->GetRenderViewHost()->GetProcess());
|
| -
|
| - EXPECT_TRUE(process->OnMessageReceived(page_change));
|
| - }
|
| -
|
| - Profile* profile() { return profile_.get(); }
|
| - Delegate* delegate() { return &delegate_; }
|
| -
|
| - private:
|
| - content::TestBrowserThreadBundle thread_bundle_;
|
| -
|
| - // Enables MockRenderProcessHosts.
|
| - content::RenderViewHostTestEnabler render_view_host_test_enabler_;
|
| -
|
| - const scoped_ptr<TestingProfile> profile_;
|
| - ScopedVector<DeclarativeContentCssConditionTracker> trackers_;
|
| - ScopedVector<content::WebContents> web_contents_;
|
| - Delegate delegate_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DeclarativeContentCssConditionTrackerTest);
|
| -};
|
| -
|
| -// Tests the basic flow of operations on the
|
| -// DeclarativeContentCssConditionTracker.
|
| -TEST_F(DeclarativeContentCssConditionTrackerTest, Basic) {
|
| - DeclarativeContentCssConditionTracker *tracker = MakeTracker();
|
| - int expected_evaluation_requests = 0;
|
| -
|
| - content::WebContents* const tab = MakeTab();
|
| - tracker->TrackForWebContents(tab);
|
| - EXPECT_EQ(expected_evaluation_requests, delegate()->evaluation_requests());
|
| -
|
| - content::MockRenderProcessHost* process =
|
| - static_cast<content::MockRenderProcessHost*>(
|
| - tab->GetRenderViewHost()->GetProcess());
|
| -
|
| - // Check that calling SetWatchedCssSelectors sends a WatchPages message with
|
| - // the selectors to the tab's RenderProcessHost.
|
| - std::set<std::string> watched_selectors;
|
| - watched_selectors.insert("a");
|
| - watched_selectors.insert("div");
|
| - ExpectWatchPagesMessage(process->sink(), watched_selectors,
|
| - [&tracker, &watched_selectors]() {
|
| - tracker->SetWatchedCssSelectors(watched_selectors);
|
| - });
|
| - EXPECT_EQ(expected_evaluation_requests, delegate()->evaluation_requests());
|
| -
|
| - // Check that receiving an OnWatchedPageChange message from the tab results in
|
| - // a request for condition evaluation.
|
| - const std::vector<std::string> matched_selectors(1, "div");
|
| - SendOnWatchedPageChangeMessage(tab, matched_selectors);
|
| - EXPECT_EQ(++expected_evaluation_requests, delegate()->evaluation_requests());
|
| -
|
| - // Check that GetMatchingCssSelectors produces the same matched selectors as
|
| - // were sent by the OnWatchedPageChange message.
|
| - base::hash_set<std::string> matching_selectors;
|
| - tracker->GetMatchingCssSelectors(tab, &matching_selectors);
|
| - EXPECT_THAT(matching_selectors,
|
| - UnorderedElementsAreArray(matched_selectors));
|
| - EXPECT_EQ(expected_evaluation_requests, delegate()->evaluation_requests());
|
| -
|
| - // Check that an in-page navigation has no effect on the matching selectors.
|
| - {
|
| - content::LoadCommittedDetails details;
|
| - details.is_in_page = true;
|
| - content::FrameNavigateParams params;
|
| - tracker->OnWebContentsNavigation(tab, details, params);
|
| - matching_selectors.clear();
|
| - tracker->GetMatchingCssSelectors(tab, &matching_selectors);
|
| - EXPECT_THAT(matching_selectors,
|
| - UnorderedElementsAreArray(matched_selectors));
|
| - EXPECT_EQ(expected_evaluation_requests, delegate()->evaluation_requests());
|
| - }
|
| -
|
| - // Check that a non in-page navigation clears the matching selectors and
|
| - // requests condition evaluation.
|
| - {
|
| - content::LoadCommittedDetails details;
|
| - details.is_in_page = false;
|
| - content::FrameNavigateParams params;
|
| - tracker->OnWebContentsNavigation(tab, details, params);
|
| - matching_selectors.clear();
|
| - tracker->GetMatchingCssSelectors(tab, &matching_selectors);
|
| - EXPECT_TRUE(matching_selectors.empty());
|
| - EXPECT_EQ(++expected_evaluation_requests,
|
| - delegate()->evaluation_requests());
|
| - }
|
| -}
|
| -
|
| -} // namespace extensions
|
|
|