// 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. package org.chromium.chrome.browser.dom_distiller; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.JNINamespace; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.components.dom_distiller.core.DomDistillerService; import java.util.HashMap; /** * DomDistillerServiceFactory maps Profiles to instances of * {@link DomDistillerService} instances. Each {@link Profile} will at most * have one instance of this service. If the service does not already exist, * it will be created on the first access. */ @JNINamespace("dom_distiller::android") public class DomDistillerServiceFactory { private static final HashMap<Profile, DomDistillerService> sServiceMap = new HashMap<Profile, DomDistillerService>(); /** * Returns Java DomDistillerService for given Profile. */ public static DomDistillerService getForProfile(Profile profile) { ThreadUtils.assertOnUiThread(); DomDistillerService service = sServiceMap.get(profile); if (service == null) { service = nativeGetForProfile(profile); sServiceMap.put(profile, service); } return service; } private static native DomDistillerService nativeGetForProfile(Profile profile); }