@Override public boolean skuDetails() { return exec(new Runnable() { @Override public void run() { final SkuDetails details = billing.skuDetails(sku); handler.obtainMessage(PremiumerHandler.ON_SKU_DETAILS, details).sendToTarget(); } }); }
@Override public void run() { onSuccessfulPurchase(purchaseData, signature); } });
@Override public void onBillingAvailable() { super.onBillingAvailable(); checkAds(); }
static Premiumer premiumer(Builder builder, Binder binder) { if (!(builder instanceof PremiumerBuilder)) { throw new AssertionError(); } return new SimplePremiumer((PremiumerBuilder) builder, binder); }
@WorkerThread void onSuccessfulPurchase(@NonNull String purchaseData, @NonNull String signature) { final boolean verified = verifier == null || verifier.verify(signatureBase64, purchaseData, signature); if (verified) { final Purchase purchase = fromJson(purchaseData, signature); cache.cache(purchase); handler.obtainMessage(PremiumerHandler.ON_PURCHASE_SUCCESSFUL, purchase).sendToTarget(); } else { handler.obtainMessage(PremiumerHandler.ON_PURCHASE_FAILED_VERIFICATION).sendToTarget(); } }
@Test public void checkShowAds() { premiumer.bind(); assertBound(true); assertThat(premiumer).isInstanceOf(SimplePremiumer.class); final SimplePremiumer simplePremiumer = (SimplePremiumer) premiumer; final boolean check = simplePremiumer.checkAds(); assertThat(check).isTrue(); assertInvokedOnce(listener).onHideAds(); }
/** * {@inheritDoc} */ @NonNull public Premiumer build() { if (payloadGenerator == null) { payloadGenerator = new PayloadGenerator.UuidPayloadGenerator(); } if (purchaseCache == null) { purchaseCache = new PurchaseCache.SharedPrefsCache(context); } if (executor == null) { executor = Executors.newSingleThreadExecutor(); } return new SimplePremiumer(this); } }
@Override public boolean purchaseDetails() { return exec(new Runnable() { @Override public void run() { final Purchase purchase = cache.load(); handler.obtainMessage(PremiumerHandler.ON_PURCHASE_DETAILS, purchase).sendToTarget(); } }); }
@Override public boolean consumeSku() { return exec(new Runnable() { @Override public void run() { boolean consumed = false; final Purchase purchase = cache.load(); if (purchase != null && purchase.purchaseToken != null) { consumed = billing.consumeSku(purchase.purchaseToken); } final int message; if (consumed) { cache.clear(); message = PremiumerHandler.ON_SKU_CONSUMED; } else { message = PremiumerHandler.ON_FAILED_TO_CONSUME_SKU; } handler.obtainMessage(message, purchase).sendToTarget(); } }); }
@VisibleForTesting boolean checkAds() { return exec(new Runnable() { @Override public void run() { final boolean owns = billing.ownsSku(sku); final int id = owns ? PremiumerHandler.ON_HIDE_ADS : PremiumerHandler.ON_SHOW_ADS; handler.obtainMessage(id).sendToTarget(); } }); }