| // 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 "chrome/browser/dom_distiller/lazy_dom_distiller_service.h" |
| |
| #include <utility> |
| |
| #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "components/dom_distiller/core/distilled_page_prefs.h" |
| #include "components/dom_distiller/core/distiller_page.h" |
| #include "components/dom_distiller/core/dom_distiller_service.h" |
| |
| namespace dom_distiller { |
| |
| namespace { |
| |
| // Identifies the user data on the profile. |
| const char kLazyDomDistillerServiceKey[] = "kLazyDomDistillerServiceKey"; |
| |
| } // namespace |
| |
| // static |
| LazyDomDistillerService* LazyDomDistillerService::Create(Profile* profile) { |
| // We can't use make_unique because the constructor is private. |
| LazyDomDistillerService* instance = new LazyDomDistillerService(profile); |
| profile->SetUserData(&kLazyDomDistillerServiceKey, |
| base::WrapUnique(instance)); |
| return instance; |
| } |
| |
| LazyDomDistillerService::~LazyDomDistillerService() = default; |
| |
| std::unique_ptr<ViewerHandle> LazyDomDistillerService::ViewUrl( |
| ViewRequestDelegate* delegate, |
| std::unique_ptr<DistillerPage> distiller_page, |
| const GURL& url) { |
| return GetImpl()->ViewUrl(delegate, std::move(distiller_page), url); |
| } |
| |
| std::unique_ptr<DistillerPage> |
| LazyDomDistillerService::CreateDefaultDistillerPage( |
| const gfx::Size& render_view_size) { |
| return GetImpl()->CreateDefaultDistillerPage(render_view_size); |
| } |
| |
| std::unique_ptr<DistillerPage> |
| LazyDomDistillerService::CreateDefaultDistillerPageWithHandle( |
| std::unique_ptr<SourcePageHandle> handle) { |
| return GetImpl()->CreateDefaultDistillerPageWithHandle(std::move(handle)); |
| } |
| |
| DistilledPagePrefs* LazyDomDistillerService::GetDistilledPagePrefs() { |
| return GetImpl()->GetDistilledPagePrefs(); |
| } |
| |
| LazyDomDistillerService::LazyDomDistillerService(Profile* profile) |
| : profile_(profile) {} |
| |
| // This will create an object and schedule work the first time it's called |
| // and just return an existing object after that. |
| DomDistillerServiceInterface* LazyDomDistillerService::GetImpl() const { |
| return DomDistillerServiceFactory::GetInstance()->GetForBrowserContext( |
| profile_); |
| } |
| |
| } // namespace dom_distiller |