From 8abb81f1e2e06f7095220b0bd873b2a3d6ab759a Mon Sep 17 00:00:00 2001 From: Gajendra N Date: Fri, 6 Nov 2020 16:26:42 +0530 Subject: [PATCH] [M94 Migration] Fix AssertNoURLRequests crash issue This patch fixes the crash by AssertNoURLRequests(). Reference: https://review.tizen.org/gerrit/247190 Change-Id: Ibe1ab1c7b2360dd795211fe991cd6be2dd9f1409 Signed-off-by: Gajendra N --- tizen_src/ewk/efl_integration/browser_context_efl.cc | 15 ++++++++++----- .../ewk/efl_integration/url_request_context_getter_efl.cc | 15 ++++++++++++++- .../ewk/efl_integration/url_request_context_getter_efl.h | 3 +++ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/tizen_src/ewk/efl_integration/browser_context_efl.cc b/tizen_src/ewk/efl_integration/browser_context_efl.cc index cb767e5..ed97268 100644 --- a/tizen_src/ewk/efl_integration/browser_context_efl.cc +++ b/tizen_src/ewk/efl_integration/browser_context_efl.cc @@ -59,14 +59,19 @@ BrowserContextEfl::~BrowserContextEfl() { autofill::PersonalDataManagerFactory::GetInstance() ->PersonalDataManagerRemove(this); #endif - - if (resource_context_) { - resource_context_->set_url_request_context_getter(NULL); + ShutdownStoragePartitions(); + if (resource_context_) BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, resource_context_); - } } -BrowserContextEfl::ResourceContextEfl::~ResourceContextEfl() {} +BrowserContextEfl::ResourceContextEfl::~ResourceContextEfl() { + // |cookie_manager_| has access to + // |URLRequestContextGetterEfl::GetURLRequestContext()|. So it should be + // released before NotifyContextShuttingDown() + cookie_manager_ = nullptr; + if (getter_.get()) + getter_->NotifyContextShuttingDown(); +} bool BrowserContextEfl::ResourceContextEfl::HTTPCustomHeaderAdd( const std::string& name, diff --git a/tizen_src/ewk/efl_integration/url_request_context_getter_efl.cc b/tizen_src/ewk/efl_integration/url_request_context_getter_efl.cc index e769f59..437244b 100644 --- a/tizen_src/ewk/efl_integration/url_request_context_getter_efl.cc +++ b/tizen_src/ewk/efl_integration/url_request_context_getter_efl.cc @@ -62,11 +62,24 @@ URLRequestContextGetterEfl::URLRequestContextGetterEfl( io_task_runner); } -URLRequestContextGetterEfl::~URLRequestContextGetterEfl() {} +URLRequestContextGetterEfl::~URLRequestContextGetterEfl() { + // NotifyContextShuttingDown() must have been called. + DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(shut_down_); +} + +void URLRequestContextGetterEfl::NotifyContextShuttingDown() { + DCHECK_CURRENTLY_ON(BrowserThread::IO); + shut_down_ = true; + URLRequestContextGetter::NotifyContextShuttingDown(); +} net::URLRequestContext* URLRequestContextGetterEfl::GetURLRequestContext() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); + if (shut_down_) + return nullptr; + if (!url_request_context_) { const base::CommandLine& command_line = *base::CommandLine::ForCurrentProcess(); diff --git a/tizen_src/ewk/efl_integration/url_request_context_getter_efl.h b/tizen_src/ewk/efl_integration/url_request_context_getter_efl.h index 86c2a27..97464f4 100644 --- a/tizen_src/ewk/efl_integration/url_request_context_getter_efl.h +++ b/tizen_src/ewk/efl_integration/url_request_context_getter_efl.h @@ -53,6 +53,8 @@ class URLRequestContextGetterEfl : public net::URLRequestContextGetter { return weak_ptr_factory_.GetWeakPtr(); } + void NotifyContextShuttingDown(); + protected: virtual ~URLRequestContextGetterEfl(); @@ -66,6 +68,7 @@ class URLRequestContextGetterEfl : public net::URLRequestContextGetter { bool ignore_certificate_errors_; base::FilePath base_path_; + bool shut_down_ = false; const scoped_refptr& io_task_runner_; const scoped_refptr& file_task_runner_; net::NetLog* net_log_; -- 2.7.4