Bug 1310560 - Part 3: Add FFI functions for setting cursor url() lists. r=xidorn
MozReview-Commit-ID: 7SYA5BPELPe
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -777,16 +777,43 @@ void
Gecko_CopyImageValueFrom(nsStyleImage* aImage, const nsStyleImage* aOther)
{
MOZ_ASSERT(aImage);
MOZ_ASSERT(aOther);
*aImage = *aOther;
}
+void
+Gecko_SetCursorArrayLength(nsStyleUserInterface* aStyleUI, size_t aLen)
+{
+ aStyleUI->mCursorImages.Clear();
+ aStyleUI->mCursorImages.SetLength(aLen);
+}
+
+void
+Gecko_SetCursorImage(nsCursorImage* aCursor,
+ const uint8_t* aURLString, uint32_t aURLStringLength,
+ ThreadSafeURIHolder* aBaseURI,
+ ThreadSafeURIHolder* aReferrer,
+ ThreadSafePrincipalHolder* aPrincipal)
+{
+ aCursor->mImage =
+ CreateStyleImageRequest(nsStyleImageRequest::Mode::Discard,
+ aURLString, aURLStringLength,
+ aBaseURI, aReferrer, aPrincipal);
+}
+
+void
+Gecko_CopyCursorArrayFrom(nsStyleUserInterface* aDest,
+ const nsStyleUserInterface* aSrc)
+{
+ aDest->mCursorImages = aSrc->mCursorImages;
+}
+
nsStyleGradient*
Gecko_CreateGradient(uint8_t aShape,
uint8_t aSize,
bool aRepeating,
bool aLegacySyntax,
uint32_t aStopCount)
{
nsStyleGradient* result = new nsStyleGradient();
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -181,16 +181,26 @@ nsStyleGradient* Gecko_CreateGradient(ui
void Gecko_SetListStyleImageNone(nsStyleList* style_struct);
void Gecko_SetListStyleImage(nsStyleList* style_struct,
const uint8_t* string_bytes, uint32_t string_length,
ThreadSafeURIHolder* base_uri,
ThreadSafeURIHolder* referrer,
ThreadSafePrincipalHolder* principal);
void Gecko_CopyListStyleImageFrom(nsStyleList* dest, const nsStyleList* src);
+// cursor style.
+void Gecko_SetCursorArrayLength(nsStyleUserInterface* ui, size_t len);
+void Gecko_SetCursorImage(nsCursorImage* cursor,
+ const uint8_t* string_bytes, uint32_t string_length,
+ ThreadSafeURIHolder* base_uri,
+ ThreadSafeURIHolder* referrer,
+ ThreadSafePrincipalHolder* principal);
+void Gecko_CopyCursorArrayFrom(nsStyleUserInterface* dest,
+ const nsStyleUserInterface* src);
+
// Display style.
void Gecko_SetMozBinding(nsStyleDisplay* style_struct,
const uint8_t* string_bytes, uint32_t string_length,
ThreadSafeURIHolder* base_uri,
ThreadSafeURIHolder* referrer,
ThreadSafePrincipalHolder* principal);
void Gecko_CopyMozBindingFrom(nsStyleDisplay* des, const nsStyleDisplay* src);