diff --git a/src/DownloadEngine.cc b/src/DownloadEngine.cc index 6742d8b7..d845ff1d 100644 --- a/src/DownloadEngine.cc +++ b/src/DownloadEngine.cc @@ -554,6 +554,11 @@ AuthConfigFactory* DownloadEngine::getAuthConfigFactory() const return authConfigFactory_.get(); } +CookieStorage* DownloadEngine::getCookieStorage() const +{ + return cookieStorage_.get(); +} + void DownloadEngine::setRefreshInterval(int64_t interval) { refreshInterval_ = std::min(static_cast(999), interval); diff --git a/src/DownloadEngine.h b/src/DownloadEngine.h index f0ba7ae2..0f2e67fd 100644 --- a/src/DownloadEngine.h +++ b/src/DownloadEngine.h @@ -133,7 +133,7 @@ private: std::deque> routineCommands_; - std::shared_ptr cookieStorage_; + std::unique_ptr cookieStorage_; #ifdef ENABLE_BITTORRENT std::shared_ptr btRegistry_; @@ -302,10 +302,7 @@ public: uint16_t port, const std::string& username); - const std::shared_ptr& getCookieStorage() const - { - return cookieStorage_; - } + CookieStorage* getCookieStorage() const; #ifdef ENABLE_BITTORRENT const std::shared_ptr& getBtRegistry() const diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 87882743..7c1e625e 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -61,6 +61,7 @@ HttpRequest::HttpRequest() : contentEncodingEnabled_(true), userAgent_(USER_AGENT), acceptMetalink_(false), + cookieStorage_(0), authConfigFactory_(0), option_(0), noCache_(true), @@ -329,12 +330,16 @@ void HttpRequest::clearHeader() headers_.clear(); } -void HttpRequest::setCookieStorage -(const std::shared_ptr& cookieStorage) +void HttpRequest::setCookieStorage(CookieStorage* cookieStorage) { cookieStorage_ = cookieStorage; } +CookieStorage* HttpRequest::getCookieStorage() const +{ + return cookieStorage_; +} + void HttpRequest::setAuthConfigFactory(AuthConfigFactory* factory) { authConfigFactory_ = factory; diff --git a/src/HttpRequest.h b/src/HttpRequest.h index 58b0a53f..32200456 100644 --- a/src/HttpRequest.h +++ b/src/HttpRequest.h @@ -74,7 +74,7 @@ private: // If true, metalink content types are sent in Accept header field. bool acceptMetalink_; - std::shared_ptr cookieStorage_; + CookieStorage* cookieStorage_; AuthConfigFactory* authConfigFactory_; @@ -185,12 +185,9 @@ public: acceptMetalink_ = f; } - void setCookieStorage(const std::shared_ptr& cookieStorage); + void setCookieStorage(CookieStorage* cookieStorage); - const std::shared_ptr& getCookieStorage() const - { - return cookieStorage_; - } + CookieStorage* getCookieStorage() const; void setAuthConfigFactory(AuthConfigFactory* factory); void setOption(const Option* option); diff --git a/test/HttpRequestTest.cc b/test/HttpRequestTest.cc index c7d09892..5beb239b 100644 --- a/test/HttpRequestTest.cc +++ b/test/HttpRequestTest.cc @@ -385,9 +385,9 @@ void HttpRequestTest::testCreateRequest_with_cookie() createCookie("name4", "value4", "aria2.org", false, "/archives/", true), createCookie("name5", "value5", "example.org", false, "/", false) }; - auto st = std::make_shared(); + CookieStorage st; for(auto c : cookies) { - CPPUNIT_ASSERT(st->store(c, 0)); + CPPUNIT_ASSERT(st.store(c, 0)); } HttpRequest httpRequest; @@ -396,7 +396,7 @@ void HttpRequestTest::testCreateRequest_with_cookie() httpRequest.setRequest(request); httpRequest.setSegment(segment); httpRequest.setFileEntry(fileEntry); - httpRequest.setCookieStorage(st); + httpRequest.setCookieStorage(&st); httpRequest.setAuthConfigFactory(authConfigFactory_.get()); httpRequest.setOption(option_.get()); diff --git a/test/HttpResponseTest.cc b/test/HttpResponseTest.cc index 3520e4fb..3f675470 100644 --- a/test/HttpResponseTest.cc +++ b/test/HttpResponseTest.cc @@ -514,8 +514,8 @@ void HttpResponseTest::testRetrieveCookie() std::shared_ptr request(new Request()); request->setUri("http://www.aria2.org/archives/aria2-1.0.0.tar.bz2"); httpRequest->setRequest(request); - std::shared_ptr st(new CookieStorage()); - httpRequest->setCookieStorage(st); + CookieStorage st; + httpRequest->setCookieStorage(&st); httpResponse.setHttpRequest(httpRequest); httpHeader->put(HttpHeader::SET_COOKIE, @@ -528,10 +528,10 @@ void HttpResponseTest::testRetrieveCookie() httpResponse.retrieveCookie(); - CPPUNIT_ASSERT_EQUAL((size_t)2, st->size()); + CPPUNIT_ASSERT_EQUAL((size_t)2, st.size()); std::vector cookies; - st->dumpCookie(std::back_inserter(cookies)); + st.dumpCookie(std::back_inserter(cookies)); CPPUNIT_ASSERT_EQUAL(std::string("k2=v2"), cookies[0].toString()); CPPUNIT_ASSERT_EQUAL(std::string("k3=v3"), cookies[1].toString()); }