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