Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: chrome/browser/android/precache/precache_launcher.cc

Issue 1031003003: precache: Move the java files into //components/precache/android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix checkdeps Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/android/precache/precache_launcher.h"
6
7 #include <jni.h>
8
9 #include "base/android/jni_android.h"
10 #include "base/android/jni_weak_ref.h"
11 #include "base/bind.h"
12 #include "base/logging.h"
13 #include "base/prefs/pref_service.h"
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/history/top_sites_factory.h"
16 #include "chrome/browser/precache/most_visited_urls_provider.h"
17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/profiles/profile_manager.h"
19 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_ names.h"
20 #include "components/history/core/browser/top_sites.h"
21 #include "components/precache/content/precache_manager.h"
22 #include "components/precache/content/precache_manager_factory.h"
23 #include "jni/PrecacheLauncher_jni.h"
24
25 using base::android::AttachCurrentThread;
26 using precache::PrecacheManager;
27
28 namespace {
29
30 // Get the profile that should be used for precaching.
31 Profile* GetProfile() {
32 Profile* profile = g_browser_process->profile_manager()
33 ->GetLastUsedProfile()
34 ->GetOriginalProfile();
35 DCHECK(profile);
36 DCHECK(g_browser_process->profile_manager()->IsValidProfile(profile));
37 return profile;
38 }
39
40 // Get the PrecacheManager for the given |profile|.
41 PrecacheManager* GetPrecacheManager(Profile* profile) {
42 PrecacheManager* precache_manager =
43 precache::PrecacheManagerFactory::GetForBrowserContext(profile);
44 DCHECK(precache_manager);
45 return precache_manager;
46 }
47
48 bool IsDataReductionProxyEnabled(Profile* profile) {
49 // TODO(bengr): Use DataReductionProxySettings instead once it is safe to
50 // instantiate from here.
51 PrefService* prefs = profile->GetPrefs();
52 return prefs &&
53 prefs->GetBoolean(
54 data_reduction_proxy::prefs::kDataReductionProxyEnabled);
55 }
56
57 } // namespace
58
59 PrecacheLauncher::PrecacheLauncher(JNIEnv* env, jobject obj)
60 : weak_java_precache_launcher_(env, obj), weak_factory_(this) {
61 }
62
63 PrecacheLauncher::~PrecacheLauncher() {
64 }
65
66 void PrecacheLauncher::Destroy(JNIEnv* env, jobject obj) {
67 delete this;
68 }
69
70 void PrecacheLauncher::Start(JNIEnv* env, jobject obj) {
71 // TODO(bengr): Add integration tests for the whole feature.
72 Profile* profile = GetProfile();
73 PrecacheManager* precache_manager = GetPrecacheManager(profile);
74 scoped_refptr<history::TopSites> ts = TopSitesFactory::GetForProfile(profile);
75 precache::MostVisitedURLsProvider url_list_provider(ts.get());
76
77 if (!IsDataReductionProxyEnabled(profile)) {
78 Java_PrecacheLauncher_onPrecacheCompletedCallback(
79 env, weak_java_precache_launcher_.get(env).obj());
80 return;
81 }
82
83 precache_manager->StartPrecaching(
84 base::Bind(&PrecacheLauncher::OnPrecacheCompleted,
85 weak_factory_.GetWeakPtr()),
86 &url_list_provider);
87 }
88
89 void PrecacheLauncher::Cancel(JNIEnv* env, jobject obj) {
90 Profile* profile = GetProfile();
91 PrecacheManager* precache_manager = GetPrecacheManager(profile);
92
93 precache_manager->CancelPrecaching();
94 }
95
96 void PrecacheLauncher::OnPrecacheCompleted() {
97 JNIEnv* env = AttachCurrentThread();
98 Java_PrecacheLauncher_onPrecacheCompletedCallback(
99 env, weak_java_precache_launcher_.get(env).obj());
100 }
101
102 static jlong Init(JNIEnv* env, jobject obj) {
103 return reinterpret_cast<intptr_t>(new PrecacheLauncher(env, obj));
104 }
105
106 static jboolean IsPrecachingEnabled(JNIEnv* env, jclass clazz) {
107 return PrecacheManager::IsPrecachingEnabled();
108 }
109
110 bool RegisterPrecacheLauncher(JNIEnv* env) {
111 return RegisterNativesImpl(env);
112 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698