Commit 19f35e26 authored by tzik's avatar tzik Committed by Commit Bot

Use scoped_refptr in blink::WebString

WebString no longer needs to use WebPrivatePtr.
This CL replaces it with scoped_refptr for cleaner impls.

Bug: 781741
Change-Id: Icacecc2e2a35b59c1d16780625643844b76cbbfb
Reviewed-on: https://chromium-review.googlesource.com/762971
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515916}
parent add28426
...@@ -4457,7 +4457,7 @@ bool RenderFrameImpl::RunModalPromptDialog( ...@@ -4457,7 +4457,7 @@ bool RenderFrameImpl::RunModalPromptDialog(
default_value.Utf16(), default_value.Utf16(),
frame_->GetDocument().Url(), &result); frame_->GetDocument().Url(), &result);
if (ok) if (ok)
actual_value->Assign(WebString::FromUTF16(result)); *actual_value = WebString::FromUTF16(result);
return ok; return ok;
} }
......
...@@ -1680,7 +1680,7 @@ void ServiceWorkerContextClient::DispatchPushEvent( ...@@ -1680,7 +1680,7 @@ void ServiceWorkerContextClient::DispatchPushEvent(
// Only set data to be a valid string if the payload had decrypted data. // Only set data to be a valid string if the payload had decrypted data.
blink::WebString data; blink::WebString data;
if (!payload.is_null) if (!payload.is_null)
data.Assign(blink::WebString::FromUTF8(payload.data)); data = blink::WebString::FromUTF8(payload.data);
proxy_->DispatchPushEvent(request_id, data); proxy_->DispatchPushEvent(request_id, data);
} }
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
#include <memory> #include <memory>
#include "platform/heap/Persistent.h"
#include "platform/wtf/Allocator.h"
#include "public/platform/modules/indexeddb/WebIDBCallbacks.h" #include "public/platform/modules/indexeddb/WebIDBCallbacks.h"
namespace blink { namespace blink {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef NavigationPreloadCallbacks_h #ifndef NavigationPreloadCallbacks_h
#define NavigationPreloadCallbacks_h #define NavigationPreloadCallbacks_h
#include "platform/heap/Persistent.h"
#include "public/platform/modules/serviceworker/WebServiceWorkerRegistration.h" #include "public/platform/modules/serviceworker/WebServiceWorkerRegistration.h"
namespace blink { namespace blink {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "platform/WebFrameScheduler.h" #include "platform/WebFrameScheduler.h"
#include "platform/wtf/Assertions.h" #include "platform/wtf/Assertions.h"
#include "platform/wtf/Noncopyable.h"
#include "public/platform/WebTraceLocation.h" #include "public/platform/WebTraceLocation.h"
namespace blink { namespace blink {
......
...@@ -171,10 +171,10 @@ bool WebCORSPreflightResultCacheItem::AllowsCrossOriginMethod( ...@@ -171,10 +171,10 @@ bool WebCORSPreflightResultCacheItem::AllowsCrossOriginMethod(
if (!credentials_ && methods_.find("*") != methods_.end()) if (!credentials_ && methods_.find("*") != methods_.end())
return true; return true;
error_description.Assign(WebString::FromASCII("Method " + method.Ascii() + error_description = WebString::FromASCII("Method " + method.Ascii() +
" is not allowed by " " is not allowed by "
"Access-Control-Allow-Methods " "Access-Control-Allow-Methods "
"in preflight response.")); "in preflight response.");
return false; return false;
} }
...@@ -189,10 +189,10 @@ bool WebCORSPreflightResultCacheItem::AllowsCrossOriginHeaders( ...@@ -189,10 +189,10 @@ bool WebCORSPreflightResultCacheItem::AllowsCrossOriginHeaders(
if (headers_.find(header.key.Ascii().data()) == headers_.end() && if (headers_.find(header.key.Ascii().data()) == headers_.end() &&
!FetchUtils::IsCORSSafelistedHeader(header.key, header.value) && !FetchUtils::IsCORSSafelistedHeader(header.key, header.value) &&
!FetchUtils::IsForbiddenHeaderName(header.key)) { !FetchUtils::IsForbiddenHeaderName(header.key)) {
error_description.Assign( error_description = String::Format(
String::Format("Request header field %s is not allowed by " "Request header field %s is not allowed by "
"Access-Control-Allow-Headers in preflight response.", "Access-Control-Allow-Headers in preflight response.",
header.key.GetString().Utf8().data())); header.key.GetString().Utf8().data());
return false; return false;
} }
} }
......
...@@ -50,36 +50,38 @@ STATIC_ASSERT_ENUM( ...@@ -50,36 +50,38 @@ STATIC_ASSERT_ENUM(
namespace blink { namespace blink {
void WebString::Reset() { WebString::~WebString() = default;
private_.Reset(); WebString::WebString() = default;
} WebString::WebString(const WebString&) = default;
WebString::WebString(WebString&&) = default;
WebString& WebString::operator=(const WebString&) = default;
WebString& WebString::operator=(WebString&&) = default;
void WebString::Assign(const WebString& other) { WebString::WebString(const WebUChar* data, size_t len)
Assign(other.private_.Get()); : impl_(StringImpl::Create8BitIfPossible(data, len)) {}
}
void WebString::Assign(const WebUChar* data, size_t length) { void WebString::Reset() {
Assign(StringImpl::Create8BitIfPossible(data, length).get()); impl_ = nullptr;
} }
size_t WebString::length() const { size_t WebString::length() const {
return private_.IsNull() ? 0 : private_->length(); return impl_ ? impl_->length() : 0;
} }
bool WebString::Is8Bit() const { bool WebString::Is8Bit() const {
return private_->Is8Bit(); return impl_->Is8Bit();
} }
const WebLChar* WebString::Data8() const { const WebLChar* WebString::Data8() const {
return !private_.IsNull() && Is8Bit() ? private_->Characters8() : nullptr; return impl_ && Is8Bit() ? impl_->Characters8() : nullptr;
} }
const WebUChar* WebString::Data16() const { const WebUChar* WebString::Data16() const {
return !private_.IsNull() && !Is8Bit() ? private_->Characters16() : nullptr; return impl_ && !Is8Bit() ? impl_->Characters16() : nullptr;
} }
std::string WebString::Utf8(UTF8ConversionMode mode) const { std::string WebString::Utf8(UTF8ConversionMode mode) const {
StringUTF8Adaptor utf8(private_.Get(), StringUTF8Adaptor utf8(impl_.get(),
static_cast<WTF::UTF8ConversionMode>(mode)); static_cast<WTF::UTF8ConversionMode>(mode));
return std::string(utf8.Data(), utf8.length()); return std::string(utf8.Data(), utf8.length());
} }
...@@ -89,31 +91,23 @@ WebString WebString::FromUTF8(const char* data, size_t length) { ...@@ -89,31 +91,23 @@ WebString WebString::FromUTF8(const char* data, size_t length) {
} }
WebString WebString::FromUTF16(const base::string16& s) { WebString WebString::FromUTF16(const base::string16& s) {
WebString string; return WebString(s.data(), s.length());
string.Assign(s.data(), s.length());
return string;
} }
WebString WebString::FromUTF16(const base::NullableString16& s) { WebString WebString::FromUTF16(const base::NullableString16& s) {
WebString string;
if (s.is_null()) if (s.is_null())
string.Reset(); return WebString();
else return WebString(s.string().data(), s.string().length());
string.Assign(s.string().data(), s.string().length());
return string;
} }
WebString WebString::FromUTF16(const base::Optional<base::string16>& s) { WebString WebString::FromUTF16(const base::Optional<base::string16>& s) {
WebString string; if (!s.has_value())
if (!s) return WebString();
string.Reset(); return WebString(s->data(), s->length());
else
string.Assign(s->data(), s->length());
return string;
} }
std::string WebString::Latin1() const { std::string WebString::Latin1() const {
String string(private_.Get()); String string(impl_);
if (string.IsEmpty()) if (string.IsEmpty())
return std::string(); return std::string();
...@@ -136,17 +130,17 @@ std::string WebString::Ascii() const { ...@@ -136,17 +130,17 @@ std::string WebString::Ascii() const {
if (IsEmpty()) if (IsEmpty())
return std::string(); return std::string();
if (private_->Is8Bit()) { if (impl_->Is8Bit()) {
return std::string(reinterpret_cast<const char*>(private_->Characters8()), return std::string(reinterpret_cast<const char*>(impl_->Characters8()),
private_->length()); impl_->length());
} }
return std::string(private_->Characters16(), return std::string(impl_->Characters16(),
private_->Characters16() + private_->length()); impl_->Characters16() + impl_->length());
} }
bool WebString::ContainsOnlyASCII() const { bool WebString::ContainsOnlyASCII() const {
return String(private_.Get()).ContainsOnlyASCII(); return String(impl_).ContainsOnlyASCII();
} }
WebString WebString::FromASCII(const std::string& s) { WebString WebString::FromASCII(const std::string& s) {
...@@ -155,43 +149,39 @@ WebString WebString::FromASCII(const std::string& s) { ...@@ -155,43 +149,39 @@ WebString WebString::FromASCII(const std::string& s) {
} }
bool WebString::Equals(const WebString& s) const { bool WebString::Equals(const WebString& s) const {
return Equal(private_.Get(), s.private_.Get()); return Equal(impl_.get(), s.impl_.get());
} }
bool WebString::Equals(const char* characters, size_t length) const { bool WebString::Equals(const char* characters, size_t length) const {
return Equal(private_.Get(), characters, length); return Equal(impl_.get(), characters, length);
} }
WebString::WebString(const WTF::String& s) : private_(s.Impl()) {} WebString::WebString(const WTF::String& s) : impl_(s.Impl()) {}
WebString& WebString::operator=(const WTF::String& s) { WebString& WebString::operator=(const WTF::String& s) {
Assign(s.Impl()); impl_ = s.Impl();
return *this; return *this;
} }
WebString::operator WTF::String() const { WebString::operator WTF::String() const {
return private_.Get(); return impl_.get();
} }
WebString::operator WTF::StringView() const { WebString::operator WTF::StringView() const {
return StringView(private_.Get()); return StringView(impl_.get());
} }
WebString::WebString(const WTF::AtomicString& s) { WebString::WebString(const WTF::AtomicString& s) {
Assign(s.GetString()); impl_ = s.Impl();
} }
WebString& WebString::operator=(const WTF::AtomicString& s) { WebString& WebString::operator=(const WTF::AtomicString& s) {
Assign(s.GetString()); impl_ = s.Impl();
return *this; return *this;
} }
WebString::operator WTF::AtomicString() const { WebString::operator WTF::AtomicString() const {
return WTF::AtomicString(private_.Get()); return WTF::AtomicString(impl_);
}
void WebString::Assign(WTF::StringImpl* p) {
private_ = p;
} }
} // namespace blink } // namespace blink
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
#ifndef WebLayerTreeViewImplForTesting_h #ifndef WebLayerTreeViewImplForTesting_h
#define WebLayerTreeViewImplForTesting_h #define WebLayerTreeViewImplForTesting_h
#include <memory>
#include "cc/test/test_task_graph_runner.h" #include "cc/test/test_task_graph_runner.h"
#include "cc/trees/layer_tree_host_client.h" #include "cc/trees/layer_tree_host_client.h"
#include "cc/trees/layer_tree_host_single_thread_client.h" #include "cc/trees/layer_tree_host_single_thread_client.h"
#include "platform/wtf/Noncopyable.h"
#include "public/platform/WebLayerTreeView.h" #include "public/platform/WebLayerTreeView.h"
#include <memory>
namespace cc { namespace cc {
class AnimationHost; class AnimationHost;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define WebBlobInfo_h #define WebBlobInfo_h
#include "WebCommon.h" #include "WebCommon.h"
#include "WebPrivatePtr.h"
#include "WebString.h" #include "WebString.h"
#include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/system/message_pipe.h"
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#ifndef WebRTCRtpReceiver_h #ifndef WebRTCRtpReceiver_h
#define WebRTCRtpReceiver_h #define WebRTCRtpReceiver_h
#include <memory>
#include "WebCommon.h" #include "WebCommon.h"
#include "WebString.h" #include "WebString.h"
#include "WebVector.h" #include "WebVector.h"
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include <string> #include <string>
#include "WebCommon.h" #include "WebCommon.h"
#include "WebPrivatePtr.h" #include "base/memory/scoped_refptr.h"
#include "base/optional.h" #include "base/optional.h"
#include "base/strings/latin1_string_conversions.h" #include "base/strings/latin1_string_conversions.h"
#include "base/strings/nullable_string16.h" #include "base/strings/nullable_string16.h"
...@@ -97,22 +97,17 @@ class WebString { ...@@ -97,22 +97,17 @@ class WebString {
kStrictReplacingErrorsWithFFFD, kStrictReplacingErrorsWithFFFD,
}; };
~WebString() { Reset(); } BLINK_PLATFORM_EXPORT ~WebString();
BLINK_PLATFORM_EXPORT WebString();
BLINK_PLATFORM_EXPORT WebString(const WebUChar* data, size_t len);
WebString() {} BLINK_PLATFORM_EXPORT WebString(const WebString&);
BLINK_PLATFORM_EXPORT WebString(WebString&&);
WebString(const WebUChar* data, size_t len) { Assign(data, len); } BLINK_PLATFORM_EXPORT WebString& operator=(const WebString&);
BLINK_PLATFORM_EXPORT WebString& operator=(WebString&&);
WebString(const WebString& s) { Assign(s); }
WebString& operator=(const WebString& s) {
Assign(s);
return *this;
}
BLINK_PLATFORM_EXPORT void Reset(); BLINK_PLATFORM_EXPORT void Reset();
BLINK_PLATFORM_EXPORT void Assign(const WebString&);
BLINK_PLATFORM_EXPORT void Assign(const WebUChar* data, size_t len);
BLINK_PLATFORM_EXPORT bool Equals(const WebString&) const; BLINK_PLATFORM_EXPORT bool Equals(const WebString&) const;
BLINK_PLATFORM_EXPORT bool Equals(const char* characters, size_t len) const; BLINK_PLATFORM_EXPORT bool Equals(const char* characters, size_t len) const;
...@@ -123,7 +118,7 @@ class WebString { ...@@ -123,7 +118,7 @@ class WebString {
BLINK_PLATFORM_EXPORT size_t length() const; BLINK_PLATFORM_EXPORT size_t length() const;
bool IsEmpty() const { return !length(); } bool IsEmpty() const { return !length(); }
bool IsNull() const { return private_.IsNull(); } bool IsNull() const { return !impl_; }
BLINK_PLATFORM_EXPORT std::string Utf8( BLINK_PLATFORM_EXPORT std::string Utf8(
UTF8ConversionMode = UTF8ConversionMode::kLenient) const; UTF8ConversionMode = UTF8ConversionMode::kLenient) const;
...@@ -139,10 +134,8 @@ class WebString { ...@@ -139,10 +134,8 @@ class WebString {
} }
BLINK_PLATFORM_EXPORT static WebString FromUTF16(const base::string16&); BLINK_PLATFORM_EXPORT static WebString FromUTF16(const base::string16&);
BLINK_PLATFORM_EXPORT static WebString FromUTF16( BLINK_PLATFORM_EXPORT static WebString FromUTF16(
const base::NullableString16&); const base::NullableString16&);
BLINK_PLATFORM_EXPORT static WebString FromUTF16( BLINK_PLATFORM_EXPORT static WebString FromUTF16(
const base::Optional<base::string16>&); const base::Optional<base::string16>&);
...@@ -175,13 +168,11 @@ class WebString { ...@@ -175,13 +168,11 @@ class WebString {
BLINK_PLATFORM_EXPORT static WebString FromASCII(const std::string&); BLINK_PLATFORM_EXPORT static WebString FromASCII(const std::string&);
template <int N> template <int N>
WebString(const char (&data)[N]) { WebString(const char (&data)[N]) : WebString(FromUTF8(data, N - 1)) {}
Assign(FromUTF8(data, N - 1));
}
template <int N> template <int N>
WebString& operator=(const char (&data)[N]) { WebString& operator=(const char (&data)[N]) {
Assign(FromUTF8(data, N - 1)); *this = FromUTF8(data, N - 1);
return *this; return *this;
} }
...@@ -202,9 +193,7 @@ class WebString { ...@@ -202,9 +193,7 @@ class WebString {
BLINK_PLATFORM_EXPORT const WebLChar* Data8() const; BLINK_PLATFORM_EXPORT const WebLChar* Data8() const;
BLINK_PLATFORM_EXPORT const WebUChar* Data16() const; BLINK_PLATFORM_EXPORT const WebUChar* Data16() const;
BLINK_PLATFORM_EXPORT void Assign(WTF::StringImpl*); scoped_refptr<WTF::StringImpl> impl_;
WebPrivatePtr<WTF::StringImpl> private_;
}; };
inline bool operator==(const WebString& a, const char* b) { inline bool operator==(const WebString& a, const char* b) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment