Index: android_webview/browser/aw_contents_io_thread_client.h |
diff --git a/android_webview/browser/aw_contents_io_thread_client.h b/android_webview/browser/aw_contents_io_thread_client.h |
index 09e5f50d212065d1b424916407a8ad7cd39193d5..87a709b50a92572977dc4d2f671c9d83c9941d19 100644 |
--- a/android_webview/browser/aw_contents_io_thread_client.h |
+++ b/android_webview/browser/aw_contents_io_thread_client.h |
@@ -10,7 +10,14 @@ |
#include <memory> |
#include <string> |
+#include "base/android/scoped_java_ref.h" |
#include "base/callback_forward.h" |
+#include "base/compiler_specific.h" |
+#include "base/macros.h" |
+ |
+namespace content { |
+class WebContents; |
+} |
namespace net { |
class URLRequest; |
@@ -46,15 +53,36 @@ class AwContentsIoThreadClient { |
LOAD_CACHE_ONLY = 3, |
}; |
- virtual ~AwContentsIoThreadClient() {} |
+ // Called when AwContents is created before there is a Java client. |
+ static void RegisterPendingContents(content::WebContents* web_contents); |
+ |
+ // Associates the |jclient| instance (which must implement the |
+ // AwContentsIoThreadClient Java interface) with the |web_contents|. |
+ // This should be called at most once per |web_contents|. |
+ static void Associate(content::WebContents* web_contents, |
+ const base::android::JavaRef<jobject>& jclient); |
+ |
+ // Sets the |jclient| java instance to which service worker related |
+ // callbacks should be delegated. |
+ static void SetServiceWorkerIoThreadClient( |
+ const base::android::JavaRef<jobject>& jclient, |
+ const base::android::JavaRef<jobject>& browser_context); |
+ |
+ // Either |pending_associate| is true or |jclient| holds a non-null |
+ // Java object. |
+ AwContentsIoThreadClient(bool pending_associate, |
+ const base::android::JavaRef<jobject>& jclient); |
+ ~AwContentsIoThreadClient(); |
+ |
+ // Implementation of AwContentsIoThreadClient. |
// Returns whether this is a new pop up that is still waiting for association |
// with the java counter part. |
- virtual bool PendingAssociation() const = 0; |
+ bool PendingAssociation() const; |
// Retrieve CacheMode setting value of this AwContents. |
// This method is called on the IO thread only. |
- virtual CacheMode GetCacheMode() const = 0; |
+ CacheMode GetCacheMode() const; |
// This will attempt to fetch the AwContentsIoThreadClient for the given |
// |render_process_id|, |render_frame_id| pair. |
@@ -81,29 +109,36 @@ class AwContentsIoThreadClient { |
// This method is called on the IO thread only. |
typedef base::Callback<void(std::unique_ptr<AwWebResourceResponse>)> |
ShouldInterceptRequestResultCallback; |
- virtual void ShouldInterceptRequestAsync( |
+ void ShouldInterceptRequestAsync( |
const net::URLRequest* request, |
- const ShouldInterceptRequestResultCallback callback) = 0; |
+ const ShouldInterceptRequestResultCallback callback); |
// Retrieve the AllowContentAccess setting value of this AwContents. |
// This method is called on the IO thread only. |
- virtual bool ShouldBlockContentUrls() const = 0; |
+ bool ShouldBlockContentUrls() const; |
// Retrieve the AllowFileAccess setting value of this AwContents. |
// This method is called on the IO thread only. |
- virtual bool ShouldBlockFileUrls() const = 0; |
+ bool ShouldBlockFileUrls() const; |
// Retrieve the BlockNetworkLoads setting value of this AwContents. |
// This method is called on the IO thread only. |
- virtual bool ShouldBlockNetworkLoads() const = 0; |
+ bool ShouldBlockNetworkLoads() const; |
// Retrieve the AcceptThirdPartyCookies setting value of this AwContents. |
- virtual bool ShouldAcceptThirdPartyCookies() const = 0; |
+ bool ShouldAcceptThirdPartyCookies() const; |
// Retrieve the SafeBrowsingEnabled setting value of this AwContents. |
- virtual bool GetSafeBrowsingEnabled() const = 0; |
+ bool GetSafeBrowsingEnabled() const; |
+ |
+ private: |
+ bool pending_association_; |
+ base::android::ScopedJavaGlobalRef<jobject> java_object_; |
+ base::android::ScopedJavaGlobalRef<jobject> bg_thread_client_object_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(AwContentsIoThreadClient); |
}; |
-} // namespace android_webview |
+} // namespace android_webview |
#endif // ANDROID_WEBVIEW_BROWSER_AW_CONTENTS_IO_THREAD_CLIENT_H_ |