Commit 9ce5a84b authored by Sky Malice's avatar Sky Malice Committed by Commit Bot

[Feed] Guard against calls from Feed after destroy().

Bug: 901414
Change-Id: I7e20f3ed819d61e207d4072486bfbd0022a50b7a
Reviewed-on: https://chromium-review.googlesource.com/c/1345422Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Commit-Queue: Sky Malice <skym@chromium.org>
Cr-Commit-Position: refs/heads/master@{#610883}
parent 715f5589
...@@ -51,7 +51,10 @@ public class FeedContentStorage implements ContentStorage { ...@@ -51,7 +51,10 @@ public class FeedContentStorage implements ContentStorage {
@Override @Override
public void get(List<String> keys, Consumer < Result < Map<String, byte[]>>> consumer) { public void get(List<String> keys, Consumer < Result < Map<String, byte[]>>> consumer) {
assert mFeedContentBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedContentBridge == null) return;
mFeedContentBridge.loadContent(keys, mFeedContentBridge.loadContent(keys,
(Map<String, byte[]> data) (Map<String, byte[]> data)
-> consumer.accept(Result.success(data)), -> consumer.accept(Result.success(data)),
...@@ -60,7 +63,10 @@ public class FeedContentStorage implements ContentStorage { ...@@ -60,7 +63,10 @@ public class FeedContentStorage implements ContentStorage {
@Override @Override
public void getAll(String prefix, Consumer < Result < Map<String, byte[]>>> consumer) { public void getAll(String prefix, Consumer < Result < Map<String, byte[]>>> consumer) {
assert mFeedContentBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedContentBridge == null) return;
mFeedContentBridge.loadContentByPrefix(prefix, mFeedContentBridge.loadContentByPrefix(prefix,
(Map<String, byte[]> data) (Map<String, byte[]> data)
-> consumer.accept(Result.success(data)), -> consumer.accept(Result.success(data)),
...@@ -69,7 +75,10 @@ public class FeedContentStorage implements ContentStorage { ...@@ -69,7 +75,10 @@ public class FeedContentStorage implements ContentStorage {
@Override @Override
public void commit(ContentMutation mutation, Consumer<CommitResult> consumer) { public void commit(ContentMutation mutation, Consumer<CommitResult> consumer) {
assert mFeedContentBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedContentBridge == null) return;
mFeedContentBridge.commitContentMutation(mutation, mFeedContentBridge.commitContentMutation(mutation,
(Boolean result) (Boolean result)
-> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE)); -> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE));
...@@ -77,7 +86,10 @@ public class FeedContentStorage implements ContentStorage { ...@@ -77,7 +86,10 @@ public class FeedContentStorage implements ContentStorage {
@Override @Override
public void getAllKeys(Consumer < Result < List<String>>> consumer) { public void getAllKeys(Consumer < Result < List<String>>> consumer) {
assert mFeedContentBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedContentBridge == null) return;
mFeedContentBridge.loadAllContentKeys( mFeedContentBridge.loadAllContentKeys(
(String[] keys) (String[] keys)
-> consumer.accept(Result.success(Arrays.asList(keys))), -> consumer.accept(Result.success(Arrays.asList(keys))),
......
...@@ -50,7 +50,10 @@ public class FeedJournalStorage implements JournalStorage { ...@@ -50,7 +50,10 @@ public class FeedJournalStorage implements JournalStorage {
@Override @Override
public void read(String journalName, Consumer < Result < List<byte[]>>> consumer) { public void read(String journalName, Consumer < Result < List<byte[]>>> consumer) {
assert mFeedJournalBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedJournalBridge == null) return;
mFeedJournalBridge.loadJournal(journalName, (byte[][] entries) -> { mFeedJournalBridge.loadJournal(journalName, (byte[][] entries) -> {
List<byte[]> journal = Arrays.asList(entries); List<byte[]> journal = Arrays.asList(entries);
consumer.accept(Result.success(journal)); consumer.accept(Result.success(journal));
...@@ -59,7 +62,10 @@ public class FeedJournalStorage implements JournalStorage { ...@@ -59,7 +62,10 @@ public class FeedJournalStorage implements JournalStorage {
@Override @Override
public void commit(JournalMutation mutation, Consumer<CommitResult> consumer) { public void commit(JournalMutation mutation, Consumer<CommitResult> consumer) {
assert mFeedJournalBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedJournalBridge == null) return;
mFeedJournalBridge.commitJournalMutation(mutation, mFeedJournalBridge.commitJournalMutation(mutation,
(Boolean result) (Boolean result)
-> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE)); -> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE));
...@@ -67,7 +73,10 @@ public class FeedJournalStorage implements JournalStorage { ...@@ -67,7 +73,10 @@ public class FeedJournalStorage implements JournalStorage {
@Override @Override
public void exists(String journalName, Consumer<Result<Boolean>> consumer) { public void exists(String journalName, Consumer<Result<Boolean>> consumer) {
assert mFeedJournalBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedJournalBridge == null) return;
mFeedJournalBridge.doesJournalExist(journalName, mFeedJournalBridge.doesJournalExist(journalName,
(Boolean exist) (Boolean exist)
-> consumer.accept(Result.success(exist)), -> consumer.accept(Result.success(exist)),
...@@ -76,7 +85,10 @@ public class FeedJournalStorage implements JournalStorage { ...@@ -76,7 +85,10 @@ public class FeedJournalStorage implements JournalStorage {
@Override @Override
public void getAllJournals(Consumer < Result < List<String>>> consumer) { public void getAllJournals(Consumer < Result < List<String>>> consumer) {
assert mFeedJournalBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedJournalBridge == null) return;
mFeedJournalBridge.loadAllJournalKeys( mFeedJournalBridge.loadAllJournalKeys(
(String[] data) (String[] data)
-> consumer.accept(Result.success(Arrays.asList(data))), -> consumer.accept(Result.success(Arrays.asList(data))),
...@@ -85,7 +97,10 @@ public class FeedJournalStorage implements JournalStorage { ...@@ -85,7 +97,10 @@ public class FeedJournalStorage implements JournalStorage {
@Override @Override
public void deleteAll(Consumer<CommitResult> consumer) { public void deleteAll(Consumer<CommitResult> consumer) {
assert mFeedJournalBridge != null; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mFeedJournalBridge == null) return;
mFeedJournalBridge.deleteAllJournals( mFeedJournalBridge.deleteAllJournals(
(Boolean result) (Boolean result)
-> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE)); -> consumer.accept(result ? CommitResult.SUCCESS : CommitResult.FAILURE));
......
...@@ -42,14 +42,20 @@ public class FeedNetworkBridge implements NetworkClient { ...@@ -42,14 +42,20 @@ public class FeedNetworkBridge implements NetworkClient {
@Override @Override
public void send(HttpRequest request, Consumer<HttpResponse> responseConsumer) { public void send(HttpRequest request, Consumer<HttpResponse> responseConsumer) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
nativeSendNetworkRequest(mNativeBridge, request.getUri().toString(), request.getMethod(), nativeSendNetworkRequest(mNativeBridge, request.getUri().toString(), request.getMethod(),
request.getBody(), result -> responseConsumer.accept(result)); request.getBody(), result -> responseConsumer.accept(result));
} }
@Override @Override
public void close() { public void close() {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
nativeCancelRequests(mNativeBridge); nativeCancelRequests(mNativeBridge);
} }
......
...@@ -57,13 +57,20 @@ public class FeedOfflineBridge ...@@ -57,13 +57,20 @@ public class FeedOfflineBridge
@Override @Override
public Long getOfflineIdIfPageIsOfflined(String url) { public Long getOfflineIdIfPageIsOfflined(String url) {
// Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return 0L;
return (Long) nativeGetOfflineId(mNativeBridge, url); return (Long) nativeGetOfflineId(mNativeBridge, url);
} }
@Override @Override
public void getOfflineStatus( public void getOfflineStatus(
List<String> urlsToRetrieve, Consumer<List<String>> urlListConsumer) { List<String> urlsToRetrieve, Consumer<List<String>> urlListConsumer) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
String[] urlsArray = urlsToRetrieve.toArray(new String[urlsToRetrieve.size()]); String[] urlsArray = urlsToRetrieve.toArray(new String[urlsToRetrieve.size()]);
nativeGetOfflineStatus(mNativeBridge, urlsArray, nativeGetOfflineStatus(mNativeBridge, urlsArray,
(String[] urlsAsArray) -> urlListConsumer.accept(Arrays.asList(urlsAsArray))); (String[] urlsAsArray) -> urlListConsumer.accept(Arrays.asList(urlsAsArray)));
...@@ -71,13 +78,19 @@ public class FeedOfflineBridge ...@@ -71,13 +78,19 @@ public class FeedOfflineBridge
@Override @Override
public void addOfflineStatusListener(OfflineStatusListener offlineStatusListener) { public void addOfflineStatusListener(OfflineStatusListener offlineStatusListener) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
mListeners.add(offlineStatusListener); mListeners.add(offlineStatusListener);
} }
@Override @Override
public void removeOfflineStatusListener(OfflineStatusListener offlineStatusListener) { public void removeOfflineStatusListener(OfflineStatusListener offlineStatusListener) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
mListeners.remove(offlineStatusListener); mListeners.remove(offlineStatusListener);
if (mListeners.isEmpty()) { if (mListeners.isEmpty()) {
nativeOnNoListeners(mNativeBridge); nativeOnNoListeners(mNativeBridge);
...@@ -86,6 +99,10 @@ public class FeedOfflineBridge ...@@ -86,6 +99,10 @@ public class FeedOfflineBridge
@Override @Override
public void onContentRemoved(List<ContentRemoval> contentRemoved) { public void onContentRemoved(List<ContentRemoval> contentRemoved) {
// Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
List<String> userDrivenRemovals = takeUserDriveRemovalsOnly(contentRemoved); List<String> userDrivenRemovals = takeUserDriveRemovalsOnly(contentRemoved);
if (!userDrivenRemovals.isEmpty()) { if (!userDrivenRemovals.isEmpty()) {
nativeOnContentRemoved(mNativeBridge, nativeOnContentRemoved(mNativeBridge,
...@@ -95,6 +112,10 @@ public class FeedOfflineBridge ...@@ -95,6 +112,10 @@ public class FeedOfflineBridge
@Override @Override
public void onNewContentReceived(boolean isNewRefresh, long contentCreationDateTimeMs) { public void onNewContentReceived(boolean isNewRefresh, long contentCreationDateTimeMs) {
// Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
nativeOnNewContentReceived(mNativeBridge); nativeOnNewContentReceived(mNativeBridge);
} }
...@@ -124,6 +145,10 @@ public class FeedOfflineBridge ...@@ -124,6 +145,10 @@ public class FeedOfflineBridge
@CalledByNative @CalledByNative
private void getKnownContent() { private void getKnownContent() {
mKnownContentApi.getKnownContent((List<ContentMetadata> metadataList) -> { mKnownContentApi.getKnownContent((List<ContentMetadata> metadataList) -> {
// Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge == 0) return;
for (ContentMetadata metadata : metadataList) { for (ContentMetadata metadata : metadataList) {
long time_published_ms = TimeUnit.SECONDS.toMillis(metadata.getTimePublished()); long time_published_ms = TimeUnit.SECONDS.toMillis(metadata.getTimePublished());
nativeAppendContentMetadata(mNativeBridge, metadata.getUrl(), metadata.getTitle(), nativeAppendContentMetadata(mNativeBridge, metadata.getUrl(), metadata.getTitle(),
......
...@@ -95,13 +95,19 @@ public class FeedSchedulerBridge implements FeedScheduler { ...@@ -95,13 +95,19 @@ public class FeedSchedulerBridge implements FeedScheduler {
@Override @Override
public void onReceiveNewContent(long contentCreationDateTimeMs) { public void onReceiveNewContent(long contentCreationDateTimeMs) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge != 0) return;
nativeOnReceiveNewContent(mNativeBridge, contentCreationDateTimeMs); nativeOnReceiveNewContent(mNativeBridge, contentCreationDateTimeMs);
} }
@Override @Override
public void onRequestError(int networkResponseCode) { public void onRequestError(int networkResponseCode) {
assert mNativeBridge != 0; // Bridge could have been destroyed for policy when this is called.
// See https://crbug.com/901414.
if (mNativeBridge != 0) return;
nativeOnRequestError(mNativeBridge, networkResponseCode); nativeOnRequestError(mNativeBridge, networkResponseCode);
} }
......
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