diff --git a/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.cc b/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.cc index 85b08f52480ef4a78bbcf4ac4743d3c216036ece..9fab603515a5336a4fa1e3c73a97c1db7635dbc4 100644 --- a/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.cc +++ b/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.cc @@ -69,7 +69,11 @@ NWebUrlResourceResponseImpl::ResponseHeaders() { void NWebUrlResourceResponseImpl::PutResponseStateAndStatuscode( int status_code, const std::string &reason_phrase) { - status_code_ = status_code; + if (IsSupportedStatusCode(status_code)) { + status_code_ = status_code; + } else { + status_code_ = net_failed_; + } reason_phrase_ = reason_phrase; } @@ -97,6 +101,22 @@ bool NWebUrlResourceResponseImpl::ResponseIsFileHandle() { return isFileFd_; } +bool NWebUrlResourceResponseImpl::IsSupportedStatusCode(int status_code) { + if (status_code >= kMinStatusCode_ && status_code <= kMaxStatusCode_) { + return true; + } + + switch (status_code) { +#define NET_ERROR(label, value) \ + case value: \ + return true; +#include "net/base/net_error_list.h" +#undef NET_ERROR + default: + return false; + } +} + void NWebUrlResourceResponseImpl::PutResponseFileHandle(int fd) { dataType_ = NWebResponseDataType::NWEB_FILE_TYPE; fd_ = fd; diff --git a/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.h b/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.h index 748e1dc3d66d971f777b98d81a92bc3965b666cf..413baf427f32d584e87b2e42cdfdb1bf95e8cc5b 100644 --- a/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.h +++ b/ohos_nweb/src/cef_delegate/nweb_url_resource_response_impl.h @@ -153,6 +153,9 @@ public: size_t GetResponseDataBufferSize() override; +private: + static bool IsSupportedStatusCode(int status_code); + private: std::string mime_type_; std::string encoding_; @@ -168,6 +171,9 @@ private: std::shared_ptr readyCallback_ = nullptr; char* buffer_; size_t bufferSize_ = 0; + const int net_failed_ = -2; + static const int kMinStatusCode_ = 100; + static const int kMaxStatusCode_ = 599; }; } // namespace OHOS::NWeb