Commit fb5643f9 authored by Mugdha Lakhani's avatar Mugdha Lakhani Committed by Commit Bot

[WebLayer] Add PrerenderLinkManagerFactory

A simple browser test has been added to verify creation logic.

Bug: 1096088
Change-Id: I02ce454b16560d9bb5ee682d33a0c67cbbd3ee8f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2341127
Commit-Queue: Mugdha Lakhani <nator@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796236}
parent dab549a6
......@@ -204,6 +204,8 @@ source_set("weblayer_lib_base") {
"browser/navigation_error_navigation_throttle.h",
"browser/navigation_impl.cc",
"browser/navigation_impl.h",
"browser/no_state_prefetch/prerender_link_manager_factory.cc",
"browser/no_state_prefetch/prerender_link_manager_factory.h",
"browser/no_state_prefetch/prerender_manager_delegate_impl.cc",
"browser/no_state_prefetch/prerender_manager_delegate_impl.h",
"browser/no_state_prefetch/prerender_manager_factory.cc",
......
......@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "components/prerender/browser/prerender_manager.h"
#include "weblayer/browser/no_state_prefetch/prerender_link_manager_factory.h"
#include "weblayer/browser/no_state_prefetch/prerender_manager_factory.h"
#include "weblayer/browser/tab_impl.h"
#include "weblayer/shell/browser/shell.h"
......@@ -25,4 +26,10 @@ IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, CreatePrerenderManager) {
EXPECT_TRUE(prerender_manager);
}
IN_PROC_BROWSER_TEST_F(NoStatePrefetchBrowserTest, CreatePrerenderLinkManager) {
auto* prerender_link_manager =
PrerenderLinkManagerFactory::GetForBrowserContext(GetBrowserContext());
EXPECT_TRUE(prerender_link_manager);
}
} // namespace weblayer
\ No newline at end of file
// Copyright 2020 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 "weblayer/browser/no_state_prefetch/prerender_link_manager_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/prerender/browser/prerender_link_manager.h"
#include "components/prerender/browser/prerender_manager.h"
#include "weblayer/browser/no_state_prefetch/prerender_manager_factory.h"
namespace weblayer {
// static
prerender::PrerenderLinkManager*
PrerenderLinkManagerFactory::GetForBrowserContext(
content::BrowserContext* browser_context) {
return static_cast<prerender::PrerenderLinkManager*>(
GetInstance()->GetServiceForBrowserContext(browser_context, true));
}
// static
PrerenderLinkManagerFactory* PrerenderLinkManagerFactory::GetInstance() {
return base::Singleton<PrerenderLinkManagerFactory>::get();
}
PrerenderLinkManagerFactory::PrerenderLinkManagerFactory()
: BrowserContextKeyedServiceFactory(
"PrerenderLinkmanager",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(weblayer::PrerenderManagerFactory::GetInstance());
}
KeyedService* PrerenderLinkManagerFactory::BuildServiceInstanceFor(
content::BrowserContext* browser_context) const {
DCHECK(browser_context);
prerender::PrerenderManager* prerender_manager =
PrerenderManagerFactory::GetForBrowserContext(browser_context);
if (!prerender_manager)
return nullptr;
return new prerender::PrerenderLinkManager(prerender_manager);
}
content::BrowserContext* PrerenderLinkManagerFactory::GetBrowserContextToUse(
content::BrowserContext* browser_context) const {
return browser_context;
}
} // namespace weblayer
\ No newline at end of file
// Copyright 2020 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.
#ifndef WEBLAYER_BROWSER_NO_STATE_PREFETCH_PRERENDER_LINK_MANAGER_FACTORY_H_
#define WEBLAYER_BROWSER_NO_STATE_PREFETCH_PRERENDER_LINK_MANAGER_FACTORY_H_
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
#include "components/prerender/browser/prerender_link_manager.h"
namespace content {
class BrowserContext;
}
namespace weblayer {
class PrerenderLinkManagerFactory : public BrowserContextKeyedServiceFactory {
public:
// Returns the prerender::PrerenderLinkManager for |context|.
static prerender::PrerenderLinkManager* GetForBrowserContext(
content::BrowserContext* context);
static PrerenderLinkManagerFactory* GetInstance();
private:
friend struct base::DefaultSingletonTraits<PrerenderLinkManagerFactory>;
PrerenderLinkManagerFactory();
~PrerenderLinkManagerFactory() override = default;
// BrowserContextKeyedServiceFactory:
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* browser) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_NO_STATE_PREFETCH_PRERENDER_LINK_MANAGER_FACTORY_H_
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