Bug 1310560 - Part 3: Add FFI functions for setting cursor url() lists. r=xidorn draft
authorCameron McCormack <cam@mcc.id.au>
Mon, 21 Nov 2016 14:34:17 +0800
changeset 441870 089a1cbcbdbec1812d488ce18e9da5f8357e4f30
parent 441869 5593f9e6596b9c05fd2541908b4cecf05d1c0797
child 537646 2199faa5a19e316786dcb6b90afa19fc3dae4761
push id36530
push userbmo:cam@mcc.id.au
push dateMon, 21 Nov 2016 06:34:49 +0000
reviewersxidorn
bugs1310560
milestone53.0a1
Bug 1310560 - Part 3: Add FFI functions for setting cursor url() lists. r=xidorn MozReview-Commit-ID: 7SYA5BPELPe
layout/style/ServoBindings.cpp
layout/style/ServoBindings.h
--- 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);