diff options
18 files changed, 470 insertions, 5 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerServiceFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerServiceFactory.java new file mode 100644 index 0000000..b7f1dcb --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerServiceFactory.java @@ -0,0 +1,40 @@ +// 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.JNINamespace; +import org.chromium.base.ThreadUtils; +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 = (DomDistillerService) nativeGetForProfile(profile); + sServiceMap.put(profile, service); + } + return service; + } + + private static native DomDistillerService nativeGetForProfile(Profile profile); +} diff --git a/chrome/android/javatests/DEPS b/chrome/android/javatests/DEPS index 619b59b..c3c100b 100644 --- a/chrome/android/javatests/DEPS +++ b/chrome/android/javatests/DEPS @@ -1,4 +1,5 @@ include_rules = [ + "+components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core", "+content/public/android/java", "+sync/android/java/src/org/chromium/sync/internal_api/pub", "+sync/android/java/src/org/chromium/sync/notifier", diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java new file mode 100644 index 0000000..60e87b1 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/dom_distiller/DistilledPagePrefsTest.java @@ -0,0 +1,42 @@ +// 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 android.test.suitebuilder.annotation.SmallTest; +import android.test.UiThreadTest; + +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.shell.ChromeShellTestBase; +import org.chromium.components.dom_distiller.core.DistilledPagePrefs; +import org.chromium.components.dom_distiller.core.DomDistillerService; +import org.chromium.components.dom_distiller.core.Theme; + +/** + * Test class for {@link DistilledPagePrefs}. + */ +public class DistilledPagePrefsTest extends ChromeShellTestBase { + + @SmallTest + @UiThreadTest + @Feature({"DomDistiller"}) + public void testGetAndSetPrefs() throws InterruptedException { + startChromeBrowserProcessSync(getInstrumentation().getTargetContext()); + DomDistillerService service = DomDistillerServiceFactory. + getForProfile(Profile.getLastUsedProfile()); + assertNotNull(service); + DistilledPagePrefs distilledPagePrefs = service.getDistilledPagePrefs(); + assertNotNull(distilledPagePrefs); + // Check default theme. + assertEquals(distilledPagePrefs.getTheme(), Theme.LIGHT); + // Check that theme can be correctly set. + distilledPagePrefs.setTheme(Theme.DARK); + assertEquals(Theme.DARK, distilledPagePrefs.getTheme()); + distilledPagePrefs.setTheme(Theme.LIGHT); + assertEquals(Theme.LIGHT, distilledPagePrefs.getTheme()); + distilledPagePrefs.setTheme(Theme.SEPIA); + assertEquals(Theme.SEPIA, distilledPagePrefs.getTheme()); + } +} diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc index e410960..7835b03 100644 --- a/chrome/browser/android/chrome_jni_registrar.cc +++ b/chrome/browser/android/chrome_jni_registrar.cc @@ -38,6 +38,7 @@ #include "chrome/browser/android/url_utilities.h" #include "chrome/browser/android/voice_search_tab_helper.h" #include "chrome/browser/autofill/android/personal_data_manager_android.h" +#include "chrome/browser/dom_distiller/dom_distiller_service_factory_android.h" #include "chrome/browser/dom_distiller/tab_utils_android.h" #include "chrome/browser/history/android/sqlite_cursor.h" #include "chrome/browser/invalidation/invalidation_controller_android.h" @@ -127,6 +128,8 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = { { "ContextMenuHelper", RegisterContextMenuHelper }, { "DataReductionProxySettings", DataReductionProxySettingsAndroid::Register }, { "DevToolsServer", RegisterDevToolsServer }, + { "DomDistillerServiceFactory", + dom_distiller::android::DomDistillerServiceFactoryAndroid::Register}, { "DomDistillerTabUtils", RegisterDomDistillerTabUtils }, { "ExternalPrerenderRequestHandler", prerender::ExternalPrerenderHandlerAndroid:: diff --git a/chrome/browser/dom_distiller/dom_distiller_service_factory_android.cc b/chrome/browser/dom_distiller/dom_distiller_service_factory_android.cc new file mode 100644 index 0000000..892a441 --- /dev/null +++ b/chrome/browser/dom_distiller/dom_distiller_service_factory_android.cc @@ -0,0 +1,40 @@ +// 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/dom_distiller_service_factory_android.h" + +#include "base/android/jni_android.h" +#include "chrome/browser/dom_distiller/dom_distiller_service_factory.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_android.h" +#include "components/dom_distiller/core/dom_distiller_service_android.h" +#include "jni/DomDistillerServiceFactory_jni.h" + +using base::android::ScopedJavaLocalRef; + +namespace dom_distiller { +namespace android { + +jobject DomDistillerServiceFactoryAndroid::GetForProfile(JNIEnv* env, + jclass clazz, + jobject j_profile) { + dom_distiller::DomDistillerService* service = + dom_distiller::DomDistillerServiceFactory::GetForBrowserContext( + ProfileAndroid::FromProfileAndroid(j_profile)); + DomDistillerServiceAndroid* service_android = + new DomDistillerServiceAndroid(service); + return service_android->java_ref_.obj(); +} + +bool DomDistillerServiceFactoryAndroid::Register(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +jobject GetForProfile(JNIEnv* env, jclass clazz, jobject j_profile) { + return DomDistillerServiceFactoryAndroid::GetForProfile( + env, clazz, j_profile); +} + +} // namespace android +} // namespace dom_distiller diff --git a/chrome/browser/dom_distiller/dom_distiller_service_factory_android.h b/chrome/browser/dom_distiller/dom_distiller_service_factory_android.h new file mode 100644 index 0000000..a44584c --- /dev/null +++ b/chrome/browser/dom_distiller/dom_distiller_service_factory_android.h @@ -0,0 +1,24 @@ +// 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. + +#ifndef CHROME_BROWSER_DOM_DISTILLER_DOM_DISTILLER_SERVICE_FACTORY_ANDROID_H_ +#define CHROME_BROWSER_DOM_DISTILLER_DOM_DISTILLER_SERVICE_FACTORY_ANDROID_H_ + +#include <jni.h> + +namespace dom_distiller { +namespace android { + +// This class should not be used except from the Java class +// DomDistillerServiceFactory. +class DomDistillerServiceFactoryAndroid { + public: + static jobject GetForProfile(JNIEnv* env, jclass clazz, jobject j_profile); + static bool Register(JNIEnv* env); +}; + +} // namespace android +} // namespace dom_distiller + +#endif // CHROME_BROWSER_DOM_DISTILLER_DOM_DISTILLER_SERVICE_FACTORY_ANDROID_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index cf770ea..3479251 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -362,6 +362,8 @@ 'browser/defaults.h', 'browser/dom_distiller/dom_distiller_service_factory.cc', 'browser/dom_distiller/dom_distiller_service_factory.h', + 'browser/dom_distiller/dom_distiller_service_factory_android.cc', + 'browser/dom_distiller/dom_distiller_service_factory_android.h', 'browser/dom_distiller/lazy_dom_distiller_service.cc', 'browser/dom_distiller/lazy_dom_distiller_service.h', 'browser/dom_distiller/tab_utils.cc', @@ -2767,6 +2769,7 @@ 'android/java/src/org/chromium/chrome/browser/DevToolsServer.java', 'android/java/src/org/chromium/chrome/browser/database/SQLiteCursor.java', 'android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerFeedbackReporter.java', + 'android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerServiceFactory.java', 'android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils.java', 'android/java/src/org/chromium/chrome/browser/favicon/FaviconHelper.java', 'android/java/src/org/chromium/chrome/browser/ForeignSessionHelper.java', diff --git a/components/dom_distiller.gypi b/components/dom_distiller.gypi index fc88cd2..b18bee7 100644 --- a/components/dom_distiller.gypi +++ b/components/dom_distiller.gypi @@ -62,6 +62,8 @@ 'dom_distiller/core/distilled_content_store.h', 'dom_distiller/core/distilled_page_prefs.cc', 'dom_distiller/core/distilled_page_prefs.h', + 'dom_distiller/core/distilled_page_prefs_android.cc', + 'dom_distiller/core/distilled_page_prefs_android.h', 'dom_distiller/core/distiller.cc', 'dom_distiller/core/distiller.h', 'dom_distiller/core/distiller_page.cc', @@ -75,12 +77,15 @@ 'dom_distiller/core/dom_distiller_observer.h', 'dom_distiller/core/dom_distiller_service.cc', 'dom_distiller/core/dom_distiller_service.h', + 'dom_distiller/core/dom_distiller_service_android.cc', + 'dom_distiller/core/dom_distiller_service_android.h', 'dom_distiller/core/dom_distiller_store.cc', 'dom_distiller/core/dom_distiller_store.h', 'dom_distiller/core/feedback_reporter.cc', 'dom_distiller/core/feedback_reporter.h', 'dom_distiller/core/task_tracker.cc', 'dom_distiller/core/task_tracker.h', + 'dom_distiller/core/theme_list.h', 'dom_distiller/core/url_constants.cc', 'dom_distiller/core/url_constants.h', 'dom_distiller/core/url_utils_android.cc', @@ -171,6 +176,7 @@ 'target_name': 'dom_distiller_core_java', 'type': 'none', 'dependencies': [ + 'dom_distiller_core_theme_java', '../base/base.gyp:base', ], 'variables': { @@ -182,6 +188,8 @@ 'target_name': 'dom_distiller_core_jni_headers', 'type': 'none', 'sources': [ + 'dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java', + 'dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java', 'dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerUrlUtils.java', ], 'variables': { @@ -189,6 +197,18 @@ }, 'includes': [ '../build/jni_generator.gypi' ], }, + { + 'target_name': 'dom_distiller_core_theme_java', + 'type': 'none', + 'sources': [ + 'dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/Theme.template', + ], + 'variables': { + 'package_name': 'org/chromium/components/dom_distiller/core', + 'template_deps': ['dom_distiller/core/theme_list.h'], + }, + 'includes': [ '../build/android/java_cpp_template.gypi' ], + }, ], }], ], diff --git a/components/dom_distiller/android/component_jni_registrar.cc b/components/dom_distiller/android/component_jni_registrar.cc index a19e4d4..f631a2d 100644 --- a/components/dom_distiller/android/component_jni_registrar.cc +++ b/components/dom_distiller/android/component_jni_registrar.cc @@ -7,6 +7,8 @@ #include "base/android/jni_android.h" #include "base/android/jni_registrar.h" #include "base/basictypes.h" +#include "components/dom_distiller/core/distilled_page_prefs_android.h" +#include "components/dom_distiller/core/dom_distiller_service_android.h" #include "components/dom_distiller/core/url_utils_android.h" namespace dom_distiller { @@ -14,8 +16,11 @@ namespace dom_distiller { namespace android { static base::android::RegistrationMethod kDomDistillerRegisteredMethods[] = { + {"DistilledPagePrefs", DistilledPagePrefsAndroid::Register}, + {"DomDistillerService", DomDistillerServiceAndroid::Register}, {"DomDistillerUrlUtils", - dom_distiller::url_utils::android::RegisterUrlUtils}, }; + dom_distiller::url_utils::android::RegisterUrlUtils}, +}; bool RegisterDomDistiller(JNIEnv* env) { return base::android::RegisterNativeMethods( diff --git a/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java new file mode 100644 index 0000000..3ec91ba --- /dev/null +++ b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DistilledPagePrefs.java @@ -0,0 +1,37 @@ +// 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.components.dom_distiller.core; + +import org.chromium.base.JNINamespace; + +/** + * Wrapper for the dom_distiller::DistilledPagePrefs. + */ +@JNINamespace("dom_distiller::android") +public final class DistilledPagePrefs { + + private final long mDistilledPagePrefsAndroid; + + DistilledPagePrefs(long distilledPagePrefsPtr) { + mDistilledPagePrefsAndroid = nativeInit(distilledPagePrefsPtr); + } + + // TODO(sunangel): Add observer support from this Java class to native + // counterpart so UI can be updated across tabs. + public void setTheme(Theme theme) { + nativeSetTheme(mDistilledPagePrefsAndroid, theme.asNativeEnum()); + } + + public Theme getTheme() { + return Theme.getThemeForValue( + nativeGetTheme(mDistilledPagePrefsAndroid)); + } + + private native long nativeInit(long distilledPagePrefPtr); + private native void nativeSetTheme(long nativeDistilledPagePrefsAndroid, + int theme); + private native int nativeGetTheme( + long nativeDistilledPagePrefsAndroid); +} diff --git a/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java new file mode 100644 index 0000000..e5b5cb8 --- /dev/null +++ b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/DomDistillerService.java @@ -0,0 +1,38 @@ +// 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.components.dom_distiller.core; + +import org.chromium.base.CalledByNative; +import org.chromium.base.JNINamespace; +import org.chromium.base.ThreadUtils; + +/** + * Wrapper for native dom_distiller::DomDistillerService. + */ +@JNINamespace("dom_distiller::android") +public final class DomDistillerService { + + private final long mDomDistillerServiceAndroid; + private final DistilledPagePrefs mDistilledPagePrefs; + + private DomDistillerService(long nativeDomDistillerAndroidServicePtr) { + mDomDistillerServiceAndroid = nativeDomDistillerAndroidServicePtr; + mDistilledPagePrefs = new DistilledPagePrefs( + nativeGetDistilledPagePrefsPtr(mDomDistillerServiceAndroid)); + } + + public DistilledPagePrefs getDistilledPagePrefs() { + return mDistilledPagePrefs; + } + + @CalledByNative + private static DomDistillerService create(long nativeDomDistillerServiceAndroid) { + ThreadUtils.assertOnUiThread(); + return new DomDistillerService(nativeDomDistillerServiceAndroid); + } + + private static native long nativeGetDistilledPagePrefsPtr( + long nativeDomDistillerServiceAndroid); +} diff --git a/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/Theme.template b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/Theme.template new file mode 100644 index 0000000..c74c8a3 --- /dev/null +++ b/components/dom_distiller/android/java/src/org/chromium/components/dom_distiller/core/Theme.template @@ -0,0 +1,37 @@ +// 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.components.dom_distiller.core; + +// An auto-generated enum for Distilled Page Theme preferences as used by +// org.chromium.components.dom_distiller.core.DistilledPagePrefs and +// the corresponding native class +// dom_distiller::android::DistilledPagePrefsAndroid +public enum Theme { + +#define DEFINE_THEME(name, value) name(value), +#include "components/dom_distiller/core/theme_list.h" +#undef DEFINE_THEME +; + +private final int mValue; + +private Theme(int value) { + mValue = value; +} + +int asNativeEnum() { + return mValue; +} + +static Theme getThemeForValue(int value) { + for (Theme theme: Theme.values()) { + if (theme.mValue == value) { + return theme; + } + } + return null; +} + +} diff --git a/components/dom_distiller/core/distilled_page_prefs.h b/components/dom_distiller/core/distilled_page_prefs.h index 9b93be5..7a40b27 100644 --- a/components/dom_distiller/core/distilled_page_prefs.h +++ b/components/dom_distiller/core/distilled_page_prefs.h @@ -22,10 +22,9 @@ class DistilledPagePrefs { public: // Possible themes for distilled page. enum Theme { - LIGHT, - DARK, - SEPIA, - THEME_COUNT +#define DEFINE_THEME(name, value) name = value, +#include "components/dom_distiller/core/theme_list.h" +#undef DEFINE_THEME }; class Observer { diff --git a/components/dom_distiller/core/distilled_page_prefs_android.cc b/components/dom_distiller/core/distilled_page_prefs_android.cc new file mode 100644 index 0000000..a4edfbd --- /dev/null +++ b/components/dom_distiller/core/distilled_page_prefs_android.cc @@ -0,0 +1,45 @@ +// 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 "components/dom_distiller/core/distilled_page_prefs_android.h" + +#include "components/dom_distiller/core/distilled_page_prefs.h" +#include "components/dom_distiller/core/dom_distiller_service.h" +#include "jni/DistilledPagePrefs_jni.h" + +namespace dom_distiller { +namespace android { + +DistilledPagePrefsAndroid::DistilledPagePrefsAndroid( + JNIEnv* env, + jobject obj, + DistilledPagePrefs* distillerPagePrefsPtr) + : distilled_page_prefs_(distillerPagePrefsPtr) { +} + +DistilledPagePrefsAndroid::~DistilledPagePrefsAndroid() { +} + +void DistilledPagePrefsAndroid::SetTheme(JNIEnv* env, jobject obj, jint theme) { + distilled_page_prefs_->SetTheme((DistilledPagePrefs::Theme)theme); +} + +jint DistilledPagePrefsAndroid::GetTheme(JNIEnv* env, jobject obj) { + return (int)distilled_page_prefs_->GetTheme(); +} + +jlong Init(JNIEnv* env, jobject obj, jlong distilledPagePrefsPtr) { + DistilledPagePrefs* distilledPagePrefs = + reinterpret_cast<DistilledPagePrefs*>(distilledPagePrefsPtr); + DistilledPagePrefsAndroid* distilled_page_prefs_android = + new DistilledPagePrefsAndroid(env, obj, distilledPagePrefs); + return reinterpret_cast<intptr_t>(distilled_page_prefs_android); +} + +bool DistilledPagePrefsAndroid::Register(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +} // namespace android +} // namespace dom_distiller diff --git a/components/dom_distiller/core/distilled_page_prefs_android.h b/components/dom_distiller/core/distilled_page_prefs_android.h new file mode 100644 index 0000000..baf7398 --- /dev/null +++ b/components/dom_distiller/core/distilled_page_prefs_android.h @@ -0,0 +1,35 @@ +// 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. + +#ifndef COMPONENTS_DOM_DISTILLER_CORE_DISTILLED_PAGE_PREFS_ANDROID_H_ +#define COMPONENTS_DOM_DISTILLER_CORE_DISTILLED_PAGE_PREFS_ANDROID_H_ + +#include <jni.h> + +#include "base/android/scoped_java_ref.h" +#include "components/dom_distiller/core/distilled_page_prefs.h" + +namespace dom_distiller { +namespace android { + +class DistilledPagePrefsAndroid { + public: + DistilledPagePrefsAndroid(JNIEnv* env, + jobject obj, + DistilledPagePrefs* distillerPagePrefsPtr); + virtual ~DistilledPagePrefsAndroid(); + static bool Register(JNIEnv* env); + void SetTheme(JNIEnv* env, jobject obj, jint theme); + jint GetTheme(JNIEnv* env, jobject obj); + + private: + DistilledPagePrefs* distilled_page_prefs_; + + DISALLOW_COPY_AND_ASSIGN(DistilledPagePrefsAndroid); +}; + +} // namespace android +} // namespace dom_distiller + +#endif // COMPONENTS_DOM_DISTILLER_CORE_DISTILLED_PAGE_PREFS_ANDROID_H_ diff --git a/components/dom_distiller/core/dom_distiller_service_android.cc b/components/dom_distiller/core/dom_distiller_service_android.cc new file mode 100644 index 0000000..5f65594 --- /dev/null +++ b/components/dom_distiller/core/dom_distiller_service_android.cc @@ -0,0 +1,38 @@ +// 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 "components/dom_distiller/core/dom_distiller_service_android.h" + +#include "base/android/jni_android.h" +#include "components/dom_distiller/core/distilled_page_prefs.h" +#include "components/dom_distiller/core/distilled_page_prefs_android.h" +#include "components/dom_distiller/core/dom_distiller_service.h" +#include "jni/DomDistillerService_jni.h" + +namespace dom_distiller { +namespace android { + +DomDistillerServiceAndroid::DomDistillerServiceAndroid( + DomDistillerService* service) + : service_(service) { + JNIEnv* env = base::android::AttachCurrentThread(); + base::android::ScopedJavaLocalRef<jobject> local_java_ref = + Java_DomDistillerService_create(env, reinterpret_cast<intptr_t>(this)); + java_ref_.Reset(env, local_java_ref.obj()); +} + +DomDistillerServiceAndroid::~DomDistillerServiceAndroid() { +} + +jlong DomDistillerServiceAndroid::GetDistilledPagePrefsPtr(JNIEnv* env, + jobject obj) { + return reinterpret_cast<intptr_t>(service_->GetDistilledPagePrefs()); +} + +bool DomDistillerServiceAndroid::Register(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +} // namespace android +} // namespace dom_distiller diff --git a/components/dom_distiller/core/dom_distiller_service_android.h b/components/dom_distiller/core/dom_distiller_service_android.h new file mode 100644 index 0000000..bf68947 --- /dev/null +++ b/components/dom_distiller/core/dom_distiller_service_android.h @@ -0,0 +1,41 @@ +// 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. + +#ifndef COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_SERVICE_ANDROID_H_ +#define COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_SERVICE_ANDROID_H_ + +#include <jni.h> + +#include "base/android/scoped_java_ref.h" +#include "components/dom_distiller/core/dom_distiller_service.h" + +namespace dom_distiller { +namespace android { + +class DomDistillerServiceFactoryAndroid; + +// Native implementation of DomDistillerService, +// provides access to Java DistilledPagePrefs. +class DomDistillerServiceAndroid { + public: + DomDistillerServiceAndroid(DomDistillerService* service); + virtual ~DomDistillerServiceAndroid(); + static bool Register(JNIEnv* env); + // Returns native pointer to native DistilledPagePrefs registered with + // DomDistillerService. + jlong GetDistilledPagePrefsPtr(JNIEnv* env, jobject obj); + + private: + // Friend class so that DomDistillerServiceFactoryAndroid has access to + // private member object java_ref_. + friend class DomDistillerServiceFactoryAndroid; + // Points to a Java instance of DomDistillerService. + base::android::ScopedJavaGlobalRef<jobject> java_ref_; + DomDistillerService* service_; +}; + +} // namespace android +} // namespace dom_distiller + +#endif // COMPONENTS_DOM_DISTILLER_CORE_DOM_DISTILLER_SERVICE_ANDROID_H diff --git a/components/dom_distiller/core/theme_list.h b/components/dom_distiller/core/theme_list.h new file mode 100644 index 0000000..44496a5 --- /dev/null +++ b/components/dom_distiller/core/theme_list.h @@ -0,0 +1,17 @@ +// 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. + +// This file intentionally does not have header guards, it's included +// inside a macro to generate enum values. + +#ifndef DEFINE_THEME +#error "DEFINE_THEME should be defined before including this file" +#endif + +// First argument represents the enum name, second argument represents enum +// value. THEME_COUNT used only by native enum. +DEFINE_THEME(LIGHT, 0) +DEFINE_THEME(DARK, 1) +DEFINE_THEME(SEPIA, 2) +DEFINE_THEME(THEME_COUNT, 3) |