X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Fbrowser%2Floader%2Fcross_site_resource_handler.h;h=df6c7a39bbf4aacbd00a548c68811ade0ee10d07;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=9f487a6fd3513ddb5eca333b2339e57f99507b5e;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/browser/loader/cross_site_resource_handler.h b/src/content/browser/loader/cross_site_resource_handler.h index 9f487a6..df6c7a3 100644 --- a/src/content/browser/loader/cross_site_resource_handler.h +++ b/src/content/browser/loader/cross_site_resource_handler.h @@ -6,6 +6,7 @@ #define CONTENT_BROWSER_LOADER_CROSS_SITE_RESOURCE_HANDLER_H_ #include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" #include "content/browser/loader/layered_resource_handler.h" #include "content/common/content_export.h" #include "net/url_request/url_request_status.h" @@ -59,6 +60,13 @@ class CrossSiteResourceHandler : public LayeredResourceHandler { ResourceResponse* response, bool should_transfer); + // Defer the navigation to the UI thread to check whether transfer is required + // or not. Currently only used in --site-per-process. + bool DeferForNavigationPolicyCheck(ResourceRequestInfoImpl* info, + ResourceResponse* response, + bool* defer); + + void ResumeOrTransfer(bool is_transfer); void ResumeIfDeferred(); // Called when about to defer a request. Sets |did_defer_| and logs the @@ -73,6 +81,12 @@ class CrossSiteResourceHandler : public LayeredResourceHandler { std::string completed_security_info_; scoped_refptr response_; + // TODO(nasko): WeakPtr is needed in --site-per-process, since all navigations + // are deferred to the UI thread and come back to IO thread via + // PostTaskAndReplyWithResult. If a transfer is needed, it goes back to the UI + // thread. This can be removed once the code is changed to only do one hop. + base::WeakPtrFactory weak_ptr_factory_; + DISALLOW_COPY_AND_ASSIGN(CrossSiteResourceHandler); };