Commit 278d42a6 authored by mpcomplete's avatar mpcomplete Committed by Commit bot

Change TypeConverter<X,Y>::ConvertFrom and ConvertTo into a single symmetric

Convert method.

Also added a ConvertTo<X> helper function.

Also changed it from class to struct, since every method was public.

BUG=406492

Review URL: https://codereview.chromium.org/507173003

Cr-Commit-Position: refs/heads/master@{#293027}
parent dc3e4984
......@@ -33,10 +33,9 @@
namespace mojo {
template <>
class TypeConverter<mojo::Array<AutocompleteAdditionalInfoPtr>,
struct TypeConverter<mojo::Array<AutocompleteAdditionalInfoPtr>,
AutocompleteMatch::AdditionalInfo> {
public:
static mojo::Array<AutocompleteAdditionalInfoPtr> ConvertFrom(
static mojo::Array<AutocompleteAdditionalInfoPtr> Convert(
const AutocompleteMatch::AdditionalInfo& input) {
mojo::Array<AutocompleteAdditionalInfoPtr> array(input.size());
size_t index = 0;
......@@ -52,9 +51,8 @@ class TypeConverter<mojo::Array<AutocompleteAdditionalInfoPtr>,
};
template <>
class TypeConverter<AutocompleteMatchMojoPtr, AutocompleteMatch> {
public:
static AutocompleteMatchMojoPtr ConvertFrom(const AutocompleteMatch& input) {
struct TypeConverter<AutocompleteMatchMojoPtr, AutocompleteMatch> {
static AutocompleteMatchMojoPtr Convert(const AutocompleteMatch& input) {
AutocompleteMatchMojoPtr result(AutocompleteMatchMojo::New());
if (input.provider != NULL) {
result->provider_name = input.provider->GetName();
......@@ -94,10 +92,9 @@ class TypeConverter<AutocompleteMatchMojoPtr, AutocompleteMatch> {
};
template <>
class TypeConverter<AutocompleteResultsForProviderMojoPtr,
struct TypeConverter<AutocompleteResultsForProviderMojoPtr,
scoped_refptr<AutocompleteProvider> > {
public:
static AutocompleteResultsForProviderMojoPtr ConvertFrom(
static AutocompleteResultsForProviderMojoPtr Convert(
const scoped_refptr<AutocompleteProvider>& input) {
AutocompleteResultsForProviderMojoPtr result(
AutocompleteResultsForProviderMojo::New());
......
......@@ -433,10 +433,10 @@ void SerialSetControlSignalsFunction::Work() {
namespace mojo {
// static
linked_ptr<extensions::core_api::serial::DeviceInfo>
TypeConverter<device::serial::DeviceInfoPtr,
linked_ptr<extensions::core_api::serial::DeviceInfo> >::
ConvertTo(const device::serial::DeviceInfoPtr& device) {
linked_ptr<extensions::core_api::serial::DeviceInfo> TypeConverter<
linked_ptr<extensions::core_api::serial::DeviceInfo>,
device::serial::DeviceInfoPtr>::Convert(const device::serial::DeviceInfoPtr&
device) {
linked_ptr<extensions::core_api::serial::DeviceInfo> info(
new extensions::core_api::serial::DeviceInfo);
info->path = device->path;
......
......@@ -246,10 +246,9 @@ class SerialSetControlSignalsFunction : public SerialAsyncApiFunction {
namespace mojo {
template <>
class TypeConverter<device::serial::DeviceInfoPtr,
linked_ptr<extensions::core_api::serial::DeviceInfo> > {
public:
static linked_ptr<extensions::core_api::serial::DeviceInfo> ConvertTo(
struct TypeConverter<linked_ptr<extensions::core_api::serial::DeviceInfo>,
device::serial::DeviceInfoPtr> {
static linked_ptr<extensions::core_api::serial::DeviceInfo> Convert(
const device::serial::DeviceInfoPtr& input);
};
......
......@@ -401,7 +401,7 @@ namespace mojo {
device::serial::HostControlSignalsPtr
TypeConverter<device::serial::HostControlSignalsPtr,
extensions::core_api::serial::HostControlSignals>::
ConvertFrom(const extensions::core_api::serial::HostControlSignals& input) {
Convert(const extensions::core_api::serial::HostControlSignals& input) {
device::serial::HostControlSignalsPtr output(
device::serial::HostControlSignals::New());
if (input.dtr.get()) {
......@@ -419,7 +419,7 @@ TypeConverter<device::serial::HostControlSignalsPtr,
device::serial::ConnectionOptionsPtr
TypeConverter<device::serial::ConnectionOptionsPtr,
extensions::core_api::serial::ConnectionOptions>::
ConvertFrom(const extensions::core_api::serial::ConnectionOptions& input) {
Convert(const extensions::core_api::serial::ConnectionOptions& input) {
device::serial::ConnectionOptionsPtr output(
device::serial::ConnectionOptions::New());
if (input.bitrate.get() && *input.bitrate > 0)
......
......@@ -196,18 +196,16 @@ class SerialConnection : public ApiResource,
namespace mojo {
template <>
class TypeConverter<device::serial::HostControlSignalsPtr,
struct TypeConverter<device::serial::HostControlSignalsPtr,
extensions::core_api::serial::HostControlSignals> {
public:
static device::serial::HostControlSignalsPtr ConvertFrom(
static device::serial::HostControlSignalsPtr Convert(
const extensions::core_api::serial::HostControlSignals& input);
};
template <>
class TypeConverter<device::serial::ConnectionOptionsPtr,
struct TypeConverter<device::serial::ConnectionOptionsPtr,
extensions::core_api::serial::ConnectionOptions> {
public:
static device::serial::ConnectionOptionsPtr ConvertFrom(
static device::serial::ConnectionOptionsPtr Convert(
const extensions::core_api::serial::ConnectionOptions& input);
};
......
......@@ -12,7 +12,7 @@
namespace mojo {
// static
String TypeConverter<String, base::StringPiece>::ConvertFrom(
String TypeConverter<String, base::StringPiece>::Convert(
const base::StringPiece& input) {
if (input.empty()) {
char c = 0;
......@@ -21,29 +21,28 @@ String TypeConverter<String, base::StringPiece>::ConvertFrom(
return String(input.data(), input.size());
}
// static
base::StringPiece TypeConverter<String, base::StringPiece>::ConvertTo(
base::StringPiece TypeConverter<base::StringPiece, String>::Convert(
const String& input) {
return input.get();
}
// static
String TypeConverter<String, base::string16>::ConvertFrom(
String TypeConverter<String, base::string16>::Convert(
const base::string16& input) {
return TypeConverter<String, base::StringPiece>::ConvertFrom(
return TypeConverter<String, base::StringPiece>::Convert(
base::UTF16ToUTF8(input));
}
// static
base::string16 TypeConverter<String, base::string16>::ConvertTo(
base::string16 TypeConverter<base::string16, String>::Convert(
const String& input) {
return base::UTF8ToUTF16(TypeConverter<String, base::StringPiece>::ConvertTo(
input));
return base::UTF8ToUTF16(input.To<base::StringPiece>());
}
String TypeConverter<String, GURL>::ConvertFrom(const GURL& input) {
String TypeConverter<String, GURL>::Convert(const GURL& input) {
return String(input.spec());
}
GURL TypeConverter<String, GURL>::ConvertTo(const String& input) {
GURL TypeConverter<GURL, String>::Convert(const String& input) {
return GURL(input.get());
}
......
......@@ -16,24 +16,33 @@ class GURL;
namespace mojo {
template <>
class MOJO_COMMON_EXPORT TypeConverter<String, base::StringPiece> {
public:
static String ConvertFrom(const base::StringPiece& input);
static base::StringPiece ConvertTo(const String& input);
struct MOJO_COMMON_EXPORT TypeConverter<String, base::StringPiece> {
static String Convert(const base::StringPiece& input);
};
template <>
class MOJO_COMMON_EXPORT TypeConverter<String, base::string16> {
public:
static String ConvertFrom(const base::string16& input);
static base::string16 ConvertTo(const String& input);
struct MOJO_COMMON_EXPORT TypeConverter<base::StringPiece, String> {
static base::StringPiece Convert(const String& input);
};
template <>
class MOJO_COMMON_EXPORT TypeConverter<String, GURL> {
public:
static String ConvertFrom(const GURL& input);
static GURL ConvertTo(const String& input);
struct MOJO_COMMON_EXPORT TypeConverter<String, base::string16> {
static String Convert(const base::string16& input);
};
template <>
struct MOJO_COMMON_EXPORT TypeConverter<base::string16, String> {
static base::string16 Convert(const String& input);
};
template <>
struct MOJO_COMMON_EXPORT TypeConverter<String, GURL> {
static String Convert(const GURL& input);
};
template <>
struct MOJO_COMMON_EXPORT TypeConverter<GURL, String> {
static GURL Convert(const String& input);
};
} // namespace mojo
......
......@@ -14,16 +14,18 @@
namespace mojo {
template <>
class TypeConverter<PointPtr, PP_Point> {
public:
static PointPtr ConvertFrom(const PP_Point& input) {
struct TypeConverter<PointPtr, PP_Point> {
static PointPtr Convert(const PP_Point& input) {
PointPtr point(Point::New());
point->x = input.x;
point->y = input.y;
return point.Pass();
}
};
static PP_Point ConvertTo(const PointPtr& input) {
template <>
struct TypeConverter<PP_Point, PointPtr> {
static PP_Point Convert(const PointPtr& input) {
if (!input)
return PP_MakePoint(0, 0);
return PP_MakePoint(static_cast<int32_t>(input->x),
......@@ -32,16 +34,18 @@ class TypeConverter<PointPtr, PP_Point> {
};
template <>
class TypeConverter<SizePtr, PP_Size> {
public:
static SizePtr ConvertFrom(const PP_Size& input) {
struct TypeConverter<SizePtr, PP_Size> {
static SizePtr Convert(const PP_Size& input) {
SizePtr size(Size::New());
size->width = input.width;
size->height = input.height;
return size.Pass();
}
};
static PP_Size ConvertTo(const SizePtr& input) {
template <>
struct TypeConverter<PP_Size, SizePtr> {
static PP_Size Convert(const SizePtr& input) {
if (!input)
return PP_MakeSize(0, 0);
return PP_MakeSize(static_cast<int32_t>(input->width),
......@@ -50,9 +54,8 @@ class TypeConverter<SizePtr, PP_Size> {
};
template <>
class TypeConverter<RectPtr, PP_Rect> {
public:
static RectPtr ConvertFrom(const PP_Rect& input) {
struct TypeConverter<RectPtr, PP_Rect> {
static RectPtr Convert(const PP_Rect& input) {
RectPtr rect(Rect::New());
rect->x = input.point.x;
rect->y = input.point.y;
......@@ -60,8 +63,11 @@ class TypeConverter<RectPtr, PP_Rect> {
rect->height = input.size.height;
return rect.Pass();
}
};
static PP_Rect ConvertTo(const RectPtr& input) {
template <>
struct TypeConverter<PP_Rect, RectPtr> {
static PP_Rect Convert(const RectPtr& input) {
if (!input)
return PP_MakeRectFromXYWH(0, 0, 0, 0);
return PP_MakeRectFromXYWH(input->x, input->y,
......
......@@ -50,12 +50,12 @@ class Array {
template <typename U>
static Array From(const U& other) {
return TypeConverter<Array, U>::ConvertFrom(other);
return TypeConverter<Array, U>::Convert(other);
}
template <typename U>
U To() const {
return TypeConverter<Array, U>::ConvertTo(*this);
return TypeConverter<U, Array>::Convert(*this);
}
void reset() {
......@@ -119,20 +119,23 @@ class Array {
};
template <typename T, typename E>
class TypeConverter<Array<T>, std::vector<E> > {
public:
static Array<T> ConvertFrom(const std::vector<E>& input) {
struct TypeConverter<Array<T>, std::vector<E> > {
static Array<T> Convert(const std::vector<E>& input) {
Array<T> result(input.size());
for (size_t i = 0; i < input.size(); ++i)
result[i] = TypeConverter<T, E>::ConvertFrom(input[i]);
result[i] = TypeConverter<T, E>::Convert(input[i]);
return result.Pass();
}
static std::vector<E> ConvertTo(const Array<T>& input) {
};
template <typename E, typename T>
struct TypeConverter<std::vector<E>, Array<T> > {
static std::vector<E> Convert(const Array<T>& input) {
std::vector<E> result;
if (!input.is_null()) {
result.resize(input.size());
for (size_t i = 0; i < input.size(); ++i)
result[i] = TypeConverter<T, E>::ConvertTo(input[i]);
result[i] = TypeConverter<E, T>::Convert(input[i]);
}
return result;
}
......
......@@ -32,12 +32,12 @@ class String {
template <typename U>
static String From(const U& other) {
return TypeConverter<String, U>::ConvertFrom(other);
return TypeConverter<String, U>::Convert(other);
}
template <typename U>
U To() const {
return TypeConverter<String, U>::ConvertTo(*this);
return TypeConverter<U, String>::Convert(*this);
}
String& operator=(const std::string& str) {
......@@ -113,20 +113,18 @@ inline std::ostream& operator<<(std::ostream& out, const String& s) {
// TODO(darin): Add similar variants of operator<,<=,>,>=
template <>
class TypeConverter<String, std::string> {
public:
static String ConvertFrom(const std::string& input) {
return String(input);
}
static std::string ConvertTo(const String& input) {
return input;
}
struct TypeConverter<String, std::string> {
static String Convert(const std::string& input) { return String(input); }
};
template <>
struct TypeConverter<std::string, String> {
static std::string Convert(const String& input) { return input; }
};
template <size_t N>
class TypeConverter<String, char[N]> {
public:
static String ConvertFrom(const char input[N]) {
struct TypeConverter<String, char[N]> {
static String Convert(const char input[N]) {
MOJO_DCHECK(input);
return String(input, N-1);
}
......@@ -134,21 +132,17 @@ class TypeConverter<String, char[N]> {
// Appease MSVC.
template <size_t N>
class TypeConverter<String, const char[N]> {
public:
static String ConvertFrom(const char input[N]) {
struct TypeConverter<String, const char[N]> {
static String Convert(const char input[N]) {
MOJO_DCHECK(input);
return String(input, N-1);
}
};
template <>
class TypeConverter<String, const char*> {
public:
struct TypeConverter<String, const char*> {
// |input| may be null, in which case a null String will be returned.
static String ConvertFrom(const char* input) {
return String(input);
}
static String Convert(const char* input) { return String(input); }
};
} // namespace mojo
......
......@@ -41,7 +41,7 @@ class StructPtr {
template <typename U>
U To() const {
return TypeConverter<StructPtr, U>::ConvertTo(*this);
return TypeConverter<U, StructPtr>::Convert(*this);
}
void reset() {
......@@ -106,7 +106,7 @@ class InlinedStructPtr {
template <typename U>
U To() const {
return TypeConverter<InlinedStructPtr, U>::ConvertTo(*this);
return TypeConverter<U, InlinedStructPtr>::Convert(*this);
}
void reset() {
......
......@@ -14,9 +14,8 @@
namespace mojo {
template <>
class TypeConverter<sample::BarPtr, int32_t> {
public:
static int32_t ConvertTo(const sample::BarPtr& bar) {
struct TypeConverter<int32_t, sample::BarPtr> {
static int32_t Convert(const sample::BarPtr& bar) {
return static_cast<int32_t>(bar->alpha) << 16 |
static_cast<int32_t>(bar->beta) << 8 |
static_cast<int32_t>(bar->gamma);
......
......@@ -41,9 +41,8 @@ bool AreEqualRectArrays(const Array<test::RectPtr>& rects1,
} // namespace
template <>
class TypeConverter<test::RectPtr, RedmondRect> {
public:
static test::RectPtr ConvertFrom(const RedmondRect& input) {
struct TypeConverter<test::RectPtr, RedmondRect> {
static test::RectPtr Convert(const RedmondRect& input) {
test::RectPtr rect(test::Rect::New());
rect->x = input.left;
rect->y = input.top;
......@@ -51,7 +50,11 @@ class TypeConverter<test::RectPtr, RedmondRect> {
rect->height = input.bottom - input.top;
return rect.Pass();
}
static RedmondRect ConvertTo(const test::RectPtr& input) {
};
template <>
struct TypeConverter<RedmondRect, test::RectPtr> {
static RedmondRect Convert(const test::RectPtr& input) {
RedmondRect rect;
rect.left = input->x;
rect.top = input->y;
......@@ -62,15 +65,18 @@ class TypeConverter<test::RectPtr, RedmondRect> {
};
template <>
class TypeConverter<test::NamedRegionPtr, RedmondNamedRegion> {
public:
static test::NamedRegionPtr ConvertFrom(const RedmondNamedRegion& input) {
struct TypeConverter<test::NamedRegionPtr, RedmondNamedRegion> {
static test::NamedRegionPtr Convert(const RedmondNamedRegion& input) {
test::NamedRegionPtr region(test::NamedRegion::New());
region->name = input.name;
region->rects = Array<test::RectPtr>::From(input.rects);
return region.Pass();
}
static RedmondNamedRegion ConvertTo(const test::NamedRegionPtr& input) {
};
template <>
struct TypeConverter<RedmondNamedRegion, test::NamedRegionPtr> {
static RedmondNamedRegion Convert(const test::NamedRegionPtr& input) {
RedmondNamedRegion region;
region.name = input->name;
region.rects = input->rects.To<std::vector<RedmondRect> >();
......
......@@ -8,18 +8,19 @@
namespace mojo {
// Specialize the following class:
// template <typename T, typename U> class TypeConverter;
// template <typename T, typename U> struct TypeConverter;
// to perform type conversion for Mojom-defined structs and arrays. Here, T is
// the Mojom-defined struct or array, and U is some other non-Mojom
// struct or array type.
// the target type; U is the input type.
//
// Specializations should implement the following interface:
// Specializations should implement the following interfaces:
// namespace mojo {
// template <>
// class TypeConverter<T, U> {
// public:
// static T ConvertFrom(const U& input);
// static U ConvertTo(const T& input);
// struct TypeConverter<X, Y> {
// static X Convert(const Y& input);
// };
// template <>
// struct TypeConverter<Y, X> {
// static Y Convert(const X& input);
// };
// }
//
......@@ -39,15 +40,17 @@ namespace mojo {
//
// namespace mojo {
// template <>
// class TypeConverter<geometry::PointPtr, gfx::Point> {
// public:
// static geometry::PointPtr ConvertFrom(const gfx::Point& input) {
// struct TypeConverter<geometry::PointPtr, gfx::Point> {
// static geometry::PointPtr Convert(const gfx::Point& input) {
// geometry::PointPtr result;
// result->x = input.x();
// result->y = input.y();
// return result.Pass();
// }
// static gfx::Point ConvertTo(const geometry::PointPtr& input) {
// };
// template <>
// struct TypeConverter<gfx::Point, geometry::PointPtr> {
// static gfx::Point Convert(const geometry::PointPtr& input) {
// return input ? gfx::Point(input->x, input->y) : gfx::Point();
// }
// };
......@@ -61,20 +64,27 @@ namespace mojo {
//
// // With an explicit cast using the static From() method.
// geometry::PointPtr output = geometry::Point::From(pt);
//
// // Inferring the input type using the ConvertTo helper function.
// gfx::Point pt2 = ConvertTo<gfx::Point>(input);
// }
//
template <typename T, typename U> class TypeConverter;
template <typename T, typename U>
struct TypeConverter;
// The following specialization is useful when you are converting between
// Array<POD> and std::vector<POD>.
template <typename T> class TypeConverter<T, T> {
public:
static T ConvertFrom(const T& obj) {
return obj;
}
static T ConvertTo(const T& obj) {
return obj;
}
template <typename T>
struct TypeConverter<T, T> {
static T Convert(const T& obj) { return obj; }
};
// The following helper function is useful for shorthand. The compiler can infer
// the input type, so you can write:
// OutputType out = ConvertTo<OutputType>(input);
template <typename T, typename U>
inline T ConvertTo(const U& obj) {
return TypeConverter<T, U>::Convert(obj);
};
} // namespace mojo
......
......@@ -16,7 +16,7 @@ class {{struct.name}} {
template <typename U>
static {{struct.name}}Ptr From(const U& u) {
return mojo::TypeConverter<{{struct.name}}Ptr, U>::ConvertFrom(u);
return mojo::TypeConverter<{{struct.name}}Ptr, U>::Convert(u);
}
{{struct.name}}();
......
......@@ -9,7 +9,7 @@
namespace mojo {
CommandBufferStatePtr
TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State>::ConvertFrom(
TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State>::Convert(
const gpu::CommandBuffer::State& input) {
CommandBufferStatePtr result(CommandBufferState::New());
result->num_entries = input.num_entries;
......@@ -23,7 +23,7 @@ TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State>::ConvertFrom(
}
gpu::CommandBuffer::State
TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State>::ConvertTo(
TypeConverter<gpu::CommandBuffer::State, CommandBufferStatePtr>::Convert(
const CommandBufferStatePtr& input) {
gpu::CommandBuffer::State state;
state.num_entries = input->num_entries;
......
......@@ -14,12 +14,13 @@ namespace mojo {
class CommandBufferState;
template <>
class TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State> {
public:
static CommandBufferStatePtr ConvertFrom(
const gpu::CommandBuffer::State& input);
static gpu::CommandBuffer::State ConvertTo(
const CommandBufferStatePtr& input);
struct TypeConverter<CommandBufferStatePtr, gpu::CommandBuffer::State> {
static CommandBufferStatePtr Convert(const gpu::CommandBuffer::State& input);
};
template <>
struct TypeConverter<gpu::CommandBuffer::State, CommandBufferStatePtr> {
static gpu::CommandBuffer::State Convert(const CommandBufferStatePtr& input);
};
} // namespace mojo
......
......@@ -180,7 +180,7 @@ scoped_ptr<blink::WebInputEvent> BuildWebMouseWheelEventFrom(
// static
scoped_ptr<blink::WebInputEvent>
TypeConverter<EventPtr, scoped_ptr<blink::WebInputEvent> >::ConvertTo(
TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr>::Convert(
const EventPtr& event) {
if (event->action == EVENT_TYPE_MOUSE_PRESSED ||
event->action == EVENT_TYPE_MOUSE_RELEASED ||
......
......@@ -14,10 +14,9 @@ class WebInputEvent;
namespace mojo {
template<>
class TypeConverter<EventPtr, scoped_ptr<blink::WebInputEvent> > {
public:
static scoped_ptr<blink::WebInputEvent> ConvertTo(const EventPtr& input);
template <>
struct TypeConverter<scoped_ptr<blink::WebInputEvent>, EventPtr> {
static scoped_ptr<blink::WebInputEvent> Convert(const EventPtr& input);
};
} // namespace mojo
......
......@@ -91,7 +91,7 @@ void AddRequestBody(URLRequest* url_request,
} // namespace
URLRequestPtr TypeConverter<URLRequestPtr, blink::WebURLRequest>::ConvertFrom(
URLRequestPtr TypeConverter<URLRequestPtr, blink::WebURLRequest>::Convert(
const blink::WebURLRequest& request) {
URLRequestPtr url_request(URLRequest::New());
url_request->url = request.url().string().utf8();
......
......@@ -13,10 +13,9 @@ class WebURLRequest;
namespace mojo {
template<>
class TypeConverter<URLRequestPtr, blink::WebURLRequest> {
public:
static URLRequestPtr ConvertFrom(const blink::WebURLRequest& request);
template <>
struct TypeConverter<URLRequestPtr, blink::WebURLRequest> {
static URLRequestPtr Convert(const blink::WebURLRequest& request);
};
} // namespace mojo
......
......@@ -214,8 +214,7 @@ void HTMLDocumentView::OnViewDestroyed(View* view) {
void HTMLDocumentView::OnViewInputEvent(View* view, const EventPtr& event) {
scoped_ptr<blink::WebInputEvent> web_event =
TypeConverter<EventPtr, scoped_ptr<blink::WebInputEvent> >::ConvertTo(
event);
event.To<scoped_ptr<blink::WebInputEvent> >();
if (web_event)
web_view_->handleInputEvent(*web_event);
}
......
......@@ -118,9 +118,8 @@ bool NativeViewportImpl::OnEvent(ui::Event* ui_event) {
return false;
client()->OnEvent(
TypeConverter<EventPtr, ui::Event>::ConvertFrom(*ui_event),
base::Bind(&NativeViewportImpl::AckEvent,
weak_factory_.GetWeakPtr()));
Event::From(*ui_event),
base::Bind(&NativeViewportImpl::AckEvent, weak_factory_.GetWeakPtr()));
waiting_for_event_ack_ = true;
return false;
}
......
......@@ -15,39 +15,49 @@
namespace mojo {
template<>
class MOJO_GEOMETRY_EXPORT TypeConverter<PointPtr, gfx::Point> {
public:
static PointPtr ConvertFrom(const gfx::Point& input);
static gfx::Point ConvertTo(const PointPtr& input);
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<PointPtr, gfx::Point> {
static PointPtr Convert(const gfx::Point& input);
};
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<gfx::Point, PointPtr> {
static gfx::Point Convert(const PointPtr& input);
};
template <>
class MOJO_GEOMETRY_EXPORT TypeConverter<PointFPtr, gfx::PointF> {
public:
static PointFPtr ConvertFrom(const gfx::PointF& input);
static gfx::PointF ConvertTo(const PointFPtr& input);
struct MOJO_GEOMETRY_EXPORT TypeConverter<PointFPtr, gfx::PointF> {
static PointFPtr Convert(const gfx::PointF& input);
};
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<gfx::PointF, PointFPtr> {
static gfx::PointF Convert(const PointFPtr& input);
};
template <>
class MOJO_GEOMETRY_EXPORT TypeConverter<SizePtr, gfx::Size> {
public:
static SizePtr ConvertFrom(const gfx::Size& input);
static gfx::Size ConvertTo(const SizePtr& input);
struct MOJO_GEOMETRY_EXPORT TypeConverter<SizePtr, gfx::Size> {
static SizePtr Convert(const gfx::Size& input);
};
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<gfx::Size, SizePtr> {
static gfx::Size Convert(const SizePtr& input);
};
template<>
class MOJO_GEOMETRY_EXPORT TypeConverter<RectPtr, gfx::Rect> {
public:
static RectPtr ConvertFrom(const gfx::Rect& input);
static gfx::Rect ConvertTo(const RectPtr& input);
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<RectPtr, gfx::Rect> {
static RectPtr Convert(const gfx::Rect& input);
};
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<gfx::Rect, RectPtr> {
static gfx::Rect Convert(const RectPtr& input);
};
template <>
class MOJO_GEOMETRY_EXPORT TypeConverter<TransformPtr, gfx::Transform> {
public:
static TransformPtr ConvertFrom(const gfx::Transform& input);
static gfx::Transform ConvertTo(const TransformPtr& input);
struct MOJO_GEOMETRY_EXPORT TypeConverter<TransformPtr, gfx::Transform> {
static TransformPtr Convert(const gfx::Transform& input);
};
template <>
struct MOJO_GEOMETRY_EXPORT TypeConverter<gfx::Transform, TransformPtr> {
static gfx::Transform Convert(const TransformPtr& input);
};
} // namespace mojo
......
......@@ -7,8 +7,7 @@
namespace mojo {
// static
PointPtr TypeConverter<PointPtr, gfx::Point>::ConvertFrom(
const gfx::Point& input) {
PointPtr TypeConverter<PointPtr, gfx::Point>::Convert(const gfx::Point& input) {
PointPtr point(Point::New());
point->x = input.x();
point->y = input.y();
......@@ -16,15 +15,14 @@ PointPtr TypeConverter<PointPtr, gfx::Point>::ConvertFrom(
}
// static
gfx::Point TypeConverter<PointPtr, gfx::Point>::ConvertTo(
const PointPtr& input) {
gfx::Point TypeConverter<gfx::Point, PointPtr>::Convert(const PointPtr& input) {
if (input.is_null())
return gfx::Point();
return gfx::Point(input->x, input->y);
}
// static
PointFPtr TypeConverter<PointFPtr, gfx::PointF>::ConvertFrom(
PointFPtr TypeConverter<PointFPtr, gfx::PointF>::Convert(
const gfx::PointF& input) {
PointFPtr point(PointF::New());
point->x = input.x();
......@@ -33,7 +31,7 @@ PointFPtr TypeConverter<PointFPtr, gfx::PointF>::ConvertFrom(
}
// static
gfx::PointF TypeConverter<PointFPtr, gfx::PointF>::ConvertTo(
gfx::PointF TypeConverter<gfx::PointF, PointFPtr>::Convert(
const PointFPtr& input) {
if (input.is_null())
return gfx::PointF();
......@@ -41,7 +39,7 @@ gfx::PointF TypeConverter<PointFPtr, gfx::PointF>::ConvertTo(
}
// static
SizePtr TypeConverter<SizePtr, gfx::Size>::ConvertFrom(const gfx::Size& input) {
SizePtr TypeConverter<SizePtr, gfx::Size>::Convert(const gfx::Size& input) {
SizePtr size(Size::New());
size->width = input.width();
size->height = input.height();
......@@ -49,14 +47,14 @@ SizePtr TypeConverter<SizePtr, gfx::Size>::ConvertFrom(const gfx::Size& input) {
}
// static
gfx::Size TypeConverter<SizePtr, gfx::Size>::ConvertTo(const SizePtr& input) {
gfx::Size TypeConverter<gfx::Size, SizePtr>::Convert(const SizePtr& input) {
if (input.is_null())
return gfx::Size();
return gfx::Size(input->width, input->height);
}
// static
RectPtr TypeConverter<RectPtr, gfx::Rect>::ConvertFrom(const gfx::Rect& input) {
RectPtr TypeConverter<RectPtr, gfx::Rect>::Convert(const gfx::Rect& input) {
RectPtr rect(Rect::New());
rect->x = input.x();
rect->y = input.y();
......@@ -66,14 +64,14 @@ RectPtr TypeConverter<RectPtr, gfx::Rect>::ConvertFrom(const gfx::Rect& input) {
}
// static
gfx::Rect TypeConverter<RectPtr, gfx::Rect>::ConvertTo(const RectPtr& input) {
gfx::Rect TypeConverter<gfx::Rect, RectPtr>::Convert(const RectPtr& input) {
if (input.is_null())
return gfx::Rect();
return gfx::Rect(input->x, input->y, input->width, input->height);
}
// static
TransformPtr TypeConverter<TransformPtr, gfx::Transform>::ConvertFrom(
TransformPtr TypeConverter<TransformPtr, gfx::Transform>::Convert(
const gfx::Transform& input) {
std::vector<float> storage(16);
input.matrix().asRowMajorf(&storage[0]);
......@@ -85,7 +83,7 @@ TransformPtr TypeConverter<TransformPtr, gfx::Transform>::ConvertFrom(
}
// static
gfx::Transform TypeConverter<TransformPtr, gfx::Transform>::ConvertTo(
gfx::Transform TypeConverter<gfx::Transform, TransformPtr>::Convert(
const TransformPtr& input) {
if (input.is_null())
return gfx::Transform();
......
......@@ -12,30 +12,29 @@
namespace mojo {
template<>
class MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventType, ui::EventType> {
public:
static EventType ConvertFrom(ui::EventType type);
static ui::EventType ConvertTo(EventType type);
template <>
struct MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventType, ui::EventType> {
static EventType Convert(ui::EventType type);
};
template<>
class MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventPtr, ui::Event> {
public:
static EventPtr ConvertFrom(const ui::Event& input);
template <>
struct MOJO_INPUT_EVENTS_EXPORT TypeConverter<ui::EventType, EventType> {
static ui::EventType Convert(EventType type);
};
template<>
class MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventPtr, ui::KeyEvent> {
public:
static EventPtr ConvertFrom(const ui::KeyEvent& input);
template <>
struct MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventPtr, ui::Event> {
static EventPtr Convert(const ui::Event& input);
};
template<>
class MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventPtr,
scoped_ptr<ui::Event> > {
public:
static scoped_ptr<ui::Event> ConvertTo(const EventPtr& input);
template <>
struct MOJO_INPUT_EVENTS_EXPORT TypeConverter<EventPtr, ui::KeyEvent> {
static EventPtr Convert(const ui::KeyEvent& input);
};
template <>
struct MOJO_INPUT_EVENTS_EXPORT TypeConverter<scoped_ptr<ui::Event>, EventPtr> {
static scoped_ptr<ui::Event> Convert(const EventPtr& input);
};
} // namespace mojo
......
......@@ -59,9 +59,7 @@ COMPILE_ASSERT(static_cast<int32>(EVENT_FLAGS_MOD3_DOWN) ==
// static
EventType TypeConverter<EventType, ui::EventType>::ConvertFrom(
ui::EventType type) {
EventType TypeConverter<EventType, ui::EventType>::Convert(ui::EventType type) {
#define MOJO_INPUT_EVENT_NAME(name) case ui::ET_##name: return EVENT_TYPE_##name
switch (type) {
......@@ -78,9 +76,7 @@ EventType TypeConverter<EventType, ui::EventType>::ConvertFrom(
}
// static
ui::EventType TypeConverter<EventType, ui::EventType>::ConvertTo(
EventType type) {
ui::EventType TypeConverter<ui::EventType, EventType>::Convert(EventType type) {
#define MOJO_INPUT_EVENT_NAME(name) case EVENT_TYPE_##name: return ui::ET_##name
switch (type) {
......@@ -94,11 +90,9 @@ ui::EventType TypeConverter<EventType, ui::EventType>::ConvertTo(
}
// static
EventPtr TypeConverter<EventPtr, ui::Event>::ConvertFrom(
const ui::Event& input) {
EventPtr TypeConverter<EventPtr, ui::Event>::Convert(const ui::Event& input) {
EventPtr event(Event::New());
event->action = TypeConverter<EventType, ui::EventType>::ConvertFrom(
input.type());
event->action = ConvertTo<EventType>(input.type());
event->flags = EventFlags(input.flags());
event->time_stamp = input.time_stamp().ToInternalValue();
......@@ -107,13 +101,10 @@ EventPtr TypeConverter<EventPtr, ui::Event>::ConvertFrom(
static_cast<const ui::LocatedEvent*>(&input);
LocationDataPtr location_data(LocationData::New());
location_data->in_view_location =
TypeConverter<PointPtr, gfx::Point>::ConvertFrom(
located_event->location());
location_data->in_view_location = Point::From(located_event->location());
if (input.HasNativeEvent()) {
location_data->screen_location =
TypeConverter<PointPtr, gfx::Point>::ConvertFrom(
ui::EventSystemLocationFromNative(input.native_event()));
Point::From(ui::EventSystemLocationFromNative(input.native_event()));
}
event->location_data = location_data.Pass();
......@@ -165,24 +156,21 @@ EventPtr TypeConverter<EventPtr, ui::Event>::ConvertFrom(
}
// static
EventPtr TypeConverter<EventPtr, ui::KeyEvent>::ConvertFrom(
EventPtr TypeConverter<EventPtr, ui::KeyEvent>::Convert(
const ui::KeyEvent& input) {
return Event::From(static_cast<const ui::Event&>(input));
}
// static
scoped_ptr<ui::Event>
TypeConverter<EventPtr, scoped_ptr<ui::Event> >::ConvertTo(
scoped_ptr<ui::Event> TypeConverter<scoped_ptr<ui::Event>, EventPtr>::Convert(
const EventPtr& input) {
scoped_ptr<ui::Event> ui_event;
ui::EventType ui_event_type =
TypeConverter<EventType, ui::EventType>::ConvertTo(input->action);
ui::EventType ui_event_type = ConvertTo<ui::EventType>(input->action);
gfx::Point location;
if (!input->location_data.is_null() &&
!input->location_data->in_view_location.is_null()) {
location = TypeConverter<PointPtr, gfx::Point>::ConvertTo(
input->location_data->in_view_location);
location = input->location_data->in_view_location.To<gfx::Point>();
}
switch (input->action) {
......
......@@ -28,106 +28,118 @@ namespace mojo {
// Types from surface_id.mojom
template <>
class MOJO_SURFACES_EXPORT
TypeConverter<SurfaceIdPtr, cc::SurfaceId> {
public:
static SurfaceIdPtr ConvertFrom(const cc::SurfaceId& input);
static cc::SurfaceId ConvertTo(const SurfaceIdPtr& input);
struct MOJO_SURFACES_EXPORT TypeConverter<SurfaceIdPtr, cc::SurfaceId> {
static SurfaceIdPtr Convert(const cc::SurfaceId& input);
};
template <>
struct MOJO_SURFACES_EXPORT TypeConverter<cc::SurfaceId, SurfaceIdPtr> {
static cc::SurfaceId Convert(const SurfaceIdPtr& input);
};
// Types from quads.mojom
template <>
class MOJO_SURFACES_EXPORT TypeConverter<ColorPtr, SkColor> {
public:
static ColorPtr ConvertFrom(const SkColor& input);
static SkColor ConvertTo(const ColorPtr& input);
struct MOJO_SURFACES_EXPORT TypeConverter<ColorPtr, SkColor> {
static ColorPtr Convert(const SkColor& input);
};
template <>
struct MOJO_SURFACES_EXPORT TypeConverter<SkColor, ColorPtr> {
static SkColor Convert(const ColorPtr& input);
};
template <>
class MOJO_SURFACES_EXPORT TypeConverter<QuadPtr, cc::DrawQuad> {
public:
static QuadPtr ConvertFrom(const cc::DrawQuad& input);
struct MOJO_SURFACES_EXPORT TypeConverter<QuadPtr, cc::DrawQuad> {
static QuadPtr Convert(const cc::DrawQuad& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<SharedQuadStatePtr, cc::SharedQuadState> {
public:
static SharedQuadStatePtr ConvertFrom(const cc::SharedQuadState& input);
static SharedQuadStatePtr Convert(const cc::SharedQuadState& input);
};
template <>
class MOJO_SURFACES_EXPORT TypeConverter<PassPtr, cc::RenderPass> {
public:
static PassPtr ConvertFrom(const cc::RenderPass& input);
struct MOJO_SURFACES_EXPORT TypeConverter<PassPtr, cc::RenderPass> {
static PassPtr Convert(const cc::RenderPass& input);
};
// This can't use the TypeConverter since cc::RenderPass must be heap allocated
// and isn't copyable.
MOJO_SURFACES_EXPORT scoped_ptr<cc::RenderPass> ConvertTo(
const PassPtr& input);
template <>
struct MOJO_SURFACES_EXPORT TypeConverter<scoped_ptr<cc::RenderPass>, PassPtr> {
static scoped_ptr<cc::RenderPass> Convert(const PassPtr& input);
};
// Types from surfaces.mojom
template <>
class MOJO_SURFACES_EXPORT TypeConverter<MailboxPtr, gpu::Mailbox> {
public:
static MailboxPtr ConvertFrom(const gpu::Mailbox& input);
static gpu::Mailbox ConvertTo(const MailboxPtr& input);
struct MOJO_SURFACES_EXPORT TypeConverter<MailboxPtr, gpu::Mailbox> {
static MailboxPtr Convert(const gpu::Mailbox& input);
};
template <>
struct MOJO_SURFACES_EXPORT TypeConverter<gpu::Mailbox, MailboxPtr> {
static gpu::Mailbox Convert(const MailboxPtr& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<MailboxHolderPtr, gpu::MailboxHolder> {
public:
static MailboxHolderPtr ConvertFrom(const gpu::MailboxHolder& input);
static gpu::MailboxHolder ConvertTo(const MailboxHolderPtr& input);
static MailboxHolderPtr Convert(const gpu::MailboxHolder& input);
};
template <>
struct MOJO_SURFACES_EXPORT
TypeConverter<gpu::MailboxHolder, MailboxHolderPtr> {
static gpu::MailboxHolder Convert(const MailboxHolderPtr& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<TransferableResourcePtr, cc::TransferableResource> {
public:
static TransferableResourcePtr ConvertFrom(
const cc::TransferableResource& input);
static cc::TransferableResource ConvertTo(
const TransferableResourcePtr& input);
static TransferableResourcePtr Convert(const cc::TransferableResource& input);
};
template <>
struct MOJO_SURFACES_EXPORT
TypeConverter<cc::TransferableResource, TransferableResourcePtr> {
static cc::TransferableResource Convert(const TransferableResourcePtr& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<Array<TransferableResourcePtr>, cc::TransferableResourceArray> {
public:
static Array<TransferableResourcePtr> ConvertFrom(
static Array<TransferableResourcePtr> Convert(
const cc::TransferableResourceArray& input);
static cc::TransferableResourceArray ConvertTo(
};
template <>
struct MOJO_SURFACES_EXPORT
TypeConverter<cc::TransferableResourceArray, Array<TransferableResourcePtr> > {
static cc::TransferableResourceArray Convert(
const Array<TransferableResourcePtr>& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<ReturnedResourcePtr, cc::ReturnedResource> {
public:
static ReturnedResourcePtr ConvertFrom(const cc::ReturnedResource& input);
static cc::ReturnedResource ConvertTo(const ReturnedResourcePtr& input);
static ReturnedResourcePtr Convert(const cc::ReturnedResource& input);
};
template <>
struct MOJO_SURFACES_EXPORT
TypeConverter<cc::ReturnedResource, ReturnedResourcePtr> {
static cc::ReturnedResource Convert(const ReturnedResourcePtr& input);
};
template <>
class MOJO_SURFACES_EXPORT
struct MOJO_SURFACES_EXPORT
TypeConverter<Array<ReturnedResourcePtr>, cc::ReturnedResourceArray> {
public:
static Array<ReturnedResourcePtr> ConvertFrom(
static Array<ReturnedResourcePtr> Convert(
const cc::ReturnedResourceArray& input);
};
template <>
class MOJO_SURFACES_EXPORT
TypeConverter<FramePtr, cc::CompositorFrame> {
public:
static FramePtr ConvertFrom(const cc::CompositorFrame& input);
struct MOJO_SURFACES_EXPORT TypeConverter<FramePtr, cc::CompositorFrame> {
static FramePtr Convert(const cc::CompositorFrame& input);
};
MOJO_SURFACES_EXPORT scoped_ptr<cc::CompositorFrame> ConvertTo(
const FramePtr& input);
template <>
struct MOJO_SURFACES_EXPORT
TypeConverter<scoped_ptr<cc::CompositorFrame>, FramePtr> {
static scoped_ptr<cc::CompositorFrame> Convert(const FramePtr& input);
};
} // namespace mojo
......
......@@ -149,7 +149,8 @@ TEST_F(SurfaceLibQuadTest, TextureQuadEmptyVertexOpacity) {
SharedQuadStatePtr mojo_sqs = SharedQuadState::New();
mojo_pass->shared_quad_states.push_back(mojo_sqs.Pass());
scoped_ptr<cc::RenderPass> pass = ConvertTo(mojo_pass.Pass());
scoped_ptr<cc::RenderPass> pass = mojo_pass.To<scoped_ptr<cc::RenderPass> >();
EXPECT_FALSE(pass);
}
......@@ -164,7 +165,7 @@ TEST_F(SurfaceLibQuadTest, TextureQuadEmptyBackgroundColor) {
SharedQuadStatePtr mojo_sqs = SharedQuadState::New();
mojo_pass->shared_quad_states.push_back(mojo_sqs.Pass());
scoped_ptr<cc::RenderPass> pass = ConvertTo(mojo_pass.Pass());
scoped_ptr<cc::RenderPass> pass = mojo_pass.To<scoped_ptr<cc::RenderPass> >();
EXPECT_FALSE(pass);
}
......@@ -291,7 +292,8 @@ TEST(SurfaceLibTest, RenderPass) {
ASSERT_EQ(3u, mojo_pass->quads.size());
EXPECT_EQ(0, mojo_pass->quads[0]->shared_quad_state_index);
scoped_ptr<cc::RenderPass> round_trip_pass = ConvertTo(mojo_pass.Pass());
scoped_ptr<cc::RenderPass> round_trip_pass =
mojo_pass.To<scoped_ptr<cc::RenderPass> >();
EXPECT_EQ(pass_id, round_trip_pass->id);
EXPECT_EQ(output_rect, round_trip_pass->output_rect);
EXPECT_EQ(damage_rect, round_trip_pass->damage_rect);
......
......@@ -301,7 +301,7 @@ void ViewManagerClientImpl::OnEmbed(
if (!connected_) {
connected_ = true;
connection_id_ = connection_id;
creator_url_ = TypeConverter<String, std::string>::ConvertFrom(creator_url);
creator_url_ = String::From(creator_url);
} else {
DCHECK_EQ(connection_id_, connection_id);
DCHECK_EQ(creator_url_, creator_url);
......
......@@ -45,8 +45,9 @@ void SurfacesImpl::SubmitFrame(SurfaceIdPtr id, FramePtr frame_ptr) {
<< " should be namespace " << id_namespace_;
return;
}
factory_.SubmitFrame(
id.To<cc::SurfaceId>(), mojo::ConvertTo(frame_ptr), base::Closure());
factory_.SubmitFrame(id.To<cc::SurfaceId>(),
frame_ptr.To<scoped_ptr<cc::CompositorFrame> >(),
base::Closure());
client_->FrameSubmitted();
}
......
......@@ -237,8 +237,7 @@ void WindowManagerApp::Embed(
}
void WindowManagerApp::DispatchEvent(EventPtr event) {
scoped_ptr<ui::Event> ui_event =
TypeConverter<EventPtr, scoped_ptr<ui::Event> >::ConvertTo(event);
scoped_ptr<ui::Event> ui_event = event.To<scoped_ptr<ui::Event> >();
if (ui_event)
window_tree_host_->SendEventToProcessor(ui_event.get());
}
......@@ -301,9 +300,7 @@ void WindowManagerApp::CompositorContentsChanged(const SkBitmap& bitmap) {
void WindowManagerApp::OnEvent(ui::Event* event) {
aura::Window* window = static_cast<aura::Window*>(event->target());
view_manager_->DispatchEvent(
GetViewForWindow(window),
TypeConverter<EventPtr, ui::Event>::ConvertFrom(*event));
view_manager_->DispatchEvent(GetViewForWindow(window), Event::From(*event));
}
////////////////////////////////////////////////////////////////////////////////
......
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