Commit 88acaf32 authored by Dan Harrington's avatar Dan Harrington Committed by Commit Bot

Add instrumentation test for prefetch with Feed

Bug: 841516
Change-Id: I53b327330283cc110eb9a23c68753781edfb4218
Reviewed-on: https://chromium-review.googlesource.com/c/1351274
Commit-Queue: Dan H <harringtond@google.com>
Reviewed-by: default avatarCarlos Knippschild <carlosk@chromium.org>
Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarSky Malice <skym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613167}
parent 03439027
......@@ -2059,6 +2059,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchBackgroundTaskTest.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchConfigurationTest.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchFlowTest.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/PrefetchFeedFlowTest.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/TestOfflinePageService.java",
"javatests/src/org/chromium/chrome/browser/offlinepages/prefetch/TestSuggestionsService.java",
"javatests/src/org/chromium/chrome/browser/omaha/ExponentialBackoffSchedulerTest.java",
......
......@@ -49,7 +49,9 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* Instrumentation tests for Prefetch.
* Instrumentation tests for Prefetch, using the Zine as the suggestion provider.
* Note: this test will eventually be removed along with Zine, and is replaced by
* PrefetchFeedFlowTest.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@RetryOnFailure
......
......@@ -18,8 +18,12 @@ public class PrefetchTestBridge {
public static void skipNTPSuggestionsAPIKeyCheck() {
nativeSkipNTPSuggestionsAPIKeyCheck();
}
public static void insertIntoCachedImageFetcher(String url, byte[] imageData) {
nativeInsertIntoCachedImageFetcher(url, imageData);
}
static native void nativeEnableLimitlessPrefetching(boolean enabled);
static native boolean nativeIsLimitlessPrefetchingEnabled();
static native void nativeSkipNTPSuggestionsAPIKeyCheck();
static native void nativeInsertIntoCachedImageFetcher(String url, byte[] imageData);
}
......@@ -48,6 +48,7 @@ public class TestOfflinePageService {
private ArrayList<String> mIncompleteOperations = new ArrayList<String>();
// Determines how this fake service responds to requests for pages.
private HashMap<String, PageBehavior> mPageBehaviors = new HashMap<String, PageBehavior>();
private StatusOuterClass.Code mDefaultGenerateStatus = StatusOuterClass.Code.OK;
private static int sNextOperationIndex = 1;
private static String newOperationName() {
......@@ -74,9 +75,15 @@ public class TestOfflinePageService {
mPageBehaviors.put(url, behavior);
}
public void setDefaultGenerateStatus(StatusOuterClass.Code status) {
mDefaultGenerateStatus = status;
}
public PageBehavior getPageBehavior(String url) {
if (!mPageBehaviors.containsKey(url)) {
mPageBehaviors.put(url, new PageBehavior());
PageBehavior behavior = new PageBehavior();
behavior.generateStatus = mDefaultGenerateStatus;
mPageBehaviors.put(url, behavior);
}
return mPageBehaviors.get(url);
}
......@@ -94,9 +101,9 @@ public class TestOfflinePageService {
// Figure out what kind of request this is, and dispatch the appropriate method.
if (request.getMethod().equals("POST")
&& request.getURI().startsWith("/v1:GeneratePageBundle")) {
GeneratePageBundleRequest bundleRequest = null;
try {
bundleRequest = GeneratePageBundleRequest.parseFrom(request.getBody());
GeneratePageBundleRequest bundleRequest =
GeneratePageBundleRequest.parseFrom(request.getBody());
handleGeneratePageBundle(bundleRequest, stream);
GeneratePageBundleCalled.notifyCalled();
return true;
......
......@@ -3,8 +3,14 @@
// found in the LICENSE file.
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
#include "base/android/jni_utils.h"
#include "chrome/browser/cached_image_fetcher/cached_image_fetcher_service_factory.h"
#include "chrome/browser/offline_pages/prefetch/prefetch_service_factory.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/image_fetcher/core/cache/image_cache.h"
#include "components/image_fetcher/core/cached_image_fetcher_service.h"
#include "components/ntp_snippets/remote/remote_suggestions_fetcher_impl.h"
#include "components/offline_pages/core/offline_page_feature.h"
#include "jni/PrefetchTestBridge_jni.h"
......@@ -34,5 +40,24 @@ JNI_EXPORT void JNI_PrefetchTestBridge_SkipNTPSuggestionsAPIKeyCheck(
set_skip_api_key_check_for_testing();
}
JNI_EXPORT void JNI_PrefetchTestBridge_InsertIntoCachedImageFetcher(
JNIEnv* env,
const JavaParamRef<jstring>& j_url,
const JavaParamRef<jbyteArray>& j_image_data) {
Profile* profile = ProfileManager::GetLastUsedProfile();
DCHECK(profile);
image_fetcher::CachedImageFetcherService* service =
image_fetcher::CachedImageFetcherServiceFactory::GetForBrowserContext(
profile);
DCHECK(service);
scoped_refptr<image_fetcher::ImageCache> cache =
service->ImageCacheForTesting();
std::string url = base::android::ConvertJavaStringToUTF8(env, j_url);
std::string image_data;
base::android::JavaByteArrayToString(env, j_image_data, &image_data);
cache->SaveImage(url, image_data);
}
} // namespace prefetch
} // namespace offline_pages
......@@ -36,4 +36,9 @@ CachedImageFetcherService::CreateCachedImageFetcher() {
image_cache_, read_only_);
}
scoped_refptr<ImageCache> CachedImageFetcherService::ImageCacheForTesting()
const {
return image_cache_;
}
} // namespace image_fetcher
......@@ -40,6 +40,8 @@ class CachedImageFetcherService : public KeyedService {
// Create an instance of CachedImageFetcher based on the ImageCache.
std::unique_ptr<CachedImageFetcher> CreateCachedImageFetcher();
scoped_refptr<ImageCache> ImageCacheForTesting() const;
private:
CreateImageDecoderCallback create_image_decoder_callback_;
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
......
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