blob: 1db863e7aa41bbcc5d884eaf5f153dc84a716d7f [file] [log] [blame]
// Copyright 2018 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.android_webview.test.services;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import org.chromium.android_webview.common.services.IVariationsSeedServer;
import org.chromium.android_webview.common.services.IVariationsSeedServerCallback;
import org.chromium.android_webview.services.VariationsSeedServer;
import org.chromium.base.test.util.CallbackHelper;
/**
* VariationsSeedServer is a bound service that shares the Variations seed with all the WebViews
* on the system. A WebView will bind and call getSeed, passing a file descriptor to which the
* service should write the seed.
*/
public class MockVariationsSeedServer extends VariationsSeedServer {
private static CallbackHelper sOnSeedRequested = new CallbackHelper();
private static Bundle sMetricsBundle;
public static CallbackHelper getRequestHelper() {
return sOnSeedRequested;
}
public static void setMetricsBundle(Bundle metricsBundle) {
sMetricsBundle = metricsBundle;
}
private final IVariationsSeedServer.Stub mMockBinder = new IVariationsSeedServer.Stub() {
@Override
public void getSeed(ParcelFileDescriptor newSeedFile, long oldSeedDate,
IVariationsSeedServerCallback callback) {
if (sMetricsBundle != null) {
try {
callback.reportVariationsServiceMetrics(sMetricsBundle);
} catch (RemoteException e) {
throw new RuntimeException("Error reporting mock metrics", e);
}
}
sOnSeedRequested.notifyCalled();
}
};
@Override
public IBinder onBind(Intent intent) {
return mMockBinder;
}
}