Commit c14545e9 authored by Tarun Bansal's avatar Tarun Bansal Committed by Commit Bot

Prerender: Remove deprecated tests

These tests check the Prerender implementation which has been replaced
by NoStatePrefetch. Prerender used to load the full webpage while
NoStatePrefetch only runs preload scanner and fetches subresources found
by preload scanner. No JavaScript is executed. This makes it
possible to remove some of these deprecated browsertests.

Change-Id: I02bbea1494de0c67ee0447887df98a069538726b
Bug: 846318,755921
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1985166Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarChris Hamilton <chrisha@chromium.org>
Reviewed-by: default avatarRobert Ogden <robertogden@chromium.org>
Auto-Submit: Tarun Bansal <tbansal@chromium.org>
Commit-Queue: Tarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728571}
parent 82d6cbea
// Copyright (c) 2013 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 <stdint.h>
#include "base/bind.h"
#include "base/callback.h"
#include "base/location.h"
#include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/extensions/activity_log/activity_log.h"
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/prerender/prerender_handle.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_manager_factory.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_switches.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
namespace extensions {
// Only the prerender tests are in this file. To add tests for activity
// logging please see:
// chrome/test/data/extensions/api_test/activity_log_private/README
class ActivityLogPrerenderTest : public ExtensionApiTest {
protected:
// Make sure the activity log is turned on.
void SetUpCommandLine(base::CommandLine* command_line) override {
ExtensionBrowserTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kEnableExtensionActivityLogging);
}
void SetUpOnMainThread() override {
ExtensionApiTest::SetUpOnMainThread();
host_resolver()->AddRule("*", "127.0.0.1");
prerender::PrerenderManager::SetMode(
prerender::PrerenderManager::DEPRECATED_PRERENDER_MODE_ENABLED);
}
static void Prerender_Arguments(
const std::string& extension_id,
uint16_t port,
const base::Closure& quit_when_idle_closure,
std::unique_ptr<std::vector<scoped_refptr<Action>>> i) {
quit_when_idle_closure.Run();
ASSERT_TRUE(i->size());
scoped_refptr<Action> last = i->front();
ASSERT_EQ(extension_id, last->extension_id());
ASSERT_EQ(Action::ACTION_CONTENT_SCRIPT, last->action_type());
ASSERT_EQ("[\"/google_cs.js\"]",
ActivityLogPolicy::Util::Serialize(last->args()));
ASSERT_EQ(
base::StringPrintf("http://www.google.com.bo:%u/title1.html", port),
last->SerializePageUrl());
ASSERT_EQ(base::StringPrintf("www.google.com.bo:%u/title1.html", port),
last->page_title());
ASSERT_EQ("{\"prerender\":true}",
ActivityLogPolicy::Util::Serialize(last->other()));
ASSERT_EQ("", last->api_name());
ASSERT_EQ("", last->SerializeArgUrl());
}
};
// https://crbug.com/724553
#if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
#define MAYBE_TestScriptInjected DISABLED_TestScriptInjected
#else
#define MAYBE_TestScriptInjected TestScriptInjected
#endif // defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
IN_PROC_BROWSER_TEST_F(ActivityLogPrerenderTest, MAYBE_TestScriptInjected) {
ASSERT_TRUE(StartEmbeddedTestServer());
uint16_t port = embedded_test_server()->port();
// Get the extension (chrome/test/data/extensions/activity_log)
const Extension* ext =
LoadExtension(test_data_dir_.AppendASCII("activity_log"));
ASSERT_TRUE(ext);
ActivityLog* activity_log = ActivityLog::GetInstance(profile());
activity_log->SetWatchdogAppActiveForTesting(true);
ASSERT_TRUE(activity_log);
// Disable rate limiting in PrerenderManager
prerender::PrerenderManager* prerender_manager =
prerender::PrerenderManagerFactory::GetForBrowserContext(profile());
ASSERT_TRUE(prerender_manager);
prerender_manager->mutable_config().rate_limit_enabled = false;
// Increase prerenderer limits, otherwise this test fails
// on Windows XP.
prerender_manager->mutable_config().max_bytes = 1000 * 1024 * 1024;
prerender_manager->mutable_config().time_to_live =
base::TimeDelta::FromMinutes(10);
prerender_manager->mutable_config().abandon_time_to_live =
base::TimeDelta::FromMinutes(10);
content::WebContents* web_contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(web_contents);
content::WindowedNotificationObserver page_observer(
content::NOTIFICATION_LOAD_STOP,
content::NotificationService::AllSources());
GURL url(base::StringPrintf("http://www.google.com.bo:%u/title1.html", port));
const gfx::Size kSize(640, 480);
std::unique_ptr<prerender::PrerenderHandle> prerender_handle(
prerender_manager->AddPrerenderFromOmnibox(
url,
web_contents->GetController().GetDefaultSessionStorageNamespace(),
kSize));
page_observer.Wait();
base::RunLoop run_loop;
activity_log->GetFilteredActions(
ext->id(), Action::ACTION_ANY, "", "", "", -1,
base::BindOnce(ActivityLogPrerenderTest::Prerender_Arguments, ext->id(),
port, run_loop.QuitWhenIdleClosure()));
// Allow invocation of Prerender_Arguments
run_loop.Run();
}
} // namespace extensions
......@@ -243,7 +243,7 @@ TEST_F(ActivityLogTest, LogPrerender) {
prerender::test_utils::RestorePrerenderMode restore_prerender_mode;
prerender::PrerenderManager::SetMode(
prerender::PrerenderManager::DEPRECATED_PRERENDER_MODE_ENABLED);
prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
prerender::PrerenderManager* prerender_manager =
prerender::PrerenderManagerFactory::GetForBrowserContext(profile());
......@@ -255,7 +255,7 @@ TEST_F(ActivityLogTest, LogPrerender) {
kSize));
const std::vector<content::WebContents*> contentses =
prerender_manager->GetAllPrerenderingContents();
prerender_manager->GetAllNoStatePrefetchingContentsForTesting();
ASSERT_EQ(1U, contentses.size());
content::WebContents *contents = contentses[0];
ASSERT_TRUE(prerender_manager->IsWebContentsPrerendering(contents, NULL));
......
......@@ -603,6 +603,21 @@ std::vector<WebContents*> PrerenderManager::GetAllPrerenderingContents() const {
return result;
}
std::vector<WebContents*>
PrerenderManager::GetAllNoStatePrefetchingContentsForTesting() const {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
std::vector<WebContents*> result;
for (const auto& prerender : active_prerenders_) {
WebContents* contents = prerender->contents()->prerender_contents();
if (contents && prerender->contents()->prerender_mode() == PREFETCH_ONLY) {
result.push_back(contents);
}
}
return result;
}
bool PrerenderManager::HasRecentlyBeenNavigatedTo(Origin origin,
const GURL& url) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
......
......@@ -267,6 +267,10 @@ class PrerenderManager : public content::RenderProcessHostObserver,
// Returns a list of all WebContents being prerendered.
std::vector<content::WebContents*> GetAllPrerenderingContents() const;
// Returns a list of all WebContents being NoStatePrefetched.
std::vector<content::WebContents*>
GetAllNoStatePrefetchingContentsForTesting() const;
// Checks whether |url| has been recently navigated to.
bool HasRecentlyBeenNavigatedTo(Origin origin, const GURL& url);
......
......@@ -536,7 +536,7 @@ TEST_F(TabLoadTrackerTest, PrerenderContentsDoesNotChangeUiTabCounts) {
// Prerender some contents.
prerender::test_utils::RestorePrerenderMode restore_prerender_mode;
prerender::PrerenderManager::SetMode(
prerender::PrerenderManager::DEPRECATED_PRERENDER_MODE_ENABLED);
prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH);
prerender::PrerenderManager* prerender_manager =
prerender::PrerenderManagerFactory::GetForBrowserContext(profile());
GURL url("http://www.example.com");
......@@ -545,8 +545,9 @@ TEST_F(TabLoadTrackerTest, PrerenderContentsDoesNotChangeUiTabCounts) {
prerender_manager->AddPrerenderFromOmnibox(
url, contents1()->GetController().GetDefaultSessionStorageNamespace(),
kSize));
EXPECT_NE(nullptr, prerender_handle);
const std::vector<content::WebContents*> contentses =
prerender_manager->GetAllPrerenderingContents();
prerender_manager->GetAllNoStatePrefetchingContentsForTesting();
ASSERT_EQ(1U, contentses.size());
// Check that the visibility and loading state for a prerender WebContents is
......
......@@ -1636,7 +1636,6 @@ if (!is_android) {
"../browser/apps/platform_apps/app_browsertest_util.h",
"../browser/apps/platform_apps/audio_focus_web_contents_observer_browsertest.cc",
"../browser/extensions/active_tab_apitest.cc",
"../browser/extensions/activity_log/activity_log_browsertest.cc",
"../browser/extensions/alert_apitest.cc",
"../browser/extensions/all_urls_apitest.cc",
"../browser/extensions/api/activity_log_private/activity_log_private_apitest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment