github.com/primecitizens/pcz/std@v0.2.1/plat/js/webext/permissions/apis_js_wasm.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright 2023 The Prime Citizens
     3  
     4  package permissions
     5  
     6  import (
     7  	"github.com/primecitizens/pcz/std/core/abi"
     8  	"github.com/primecitizens/pcz/std/core/mark"
     9  	"github.com/primecitizens/pcz/std/ffi/js"
    10  	"github.com/primecitizens/pcz/std/plat/js/webext/permissions/bindings"
    11  )
    12  
    13  type Permissions struct {
    14  	// Origins is "Permissions.origins"
    15  	//
    16  	// Optional
    17  	Origins js.Array[js.String]
    18  	// Permissions is "Permissions.permissions"
    19  	//
    20  	// Optional
    21  	Permissions js.Array[js.String]
    22  
    23  	FFI_USE bool
    24  }
    25  
    26  // FromRef calls UpdateFrom and returns a Permissions with all fields set.
    27  func (p Permissions) FromRef(ref js.Ref) Permissions {
    28  	p.UpdateFrom(ref)
    29  	return p
    30  }
    31  
    32  // New creates a new Permissions in the application heap.
    33  func (p Permissions) New() js.Ref {
    34  	return bindings.PermissionsJSLoad(
    35  		js.Pointer(&p), js.True, 0,
    36  	)
    37  }
    38  
    39  // UpdateFrom copies value of all fields of the heap object to p.
    40  func (p *Permissions) UpdateFrom(ref js.Ref) {
    41  	bindings.PermissionsJSStore(
    42  		js.Pointer(p), ref,
    43  	)
    44  }
    45  
    46  // Update writes all fields of the p to the heap object referenced by ref.
    47  func (p *Permissions) Update(ref js.Ref) {
    48  	bindings.PermissionsJSLoad(
    49  		js.Pointer(p), js.False, ref,
    50  	)
    51  }
    52  
    53  // FreeMembers frees fields with heap reference, if recursive is true
    54  // free all heap references reachable from p.
    55  func (p *Permissions) FreeMembers(recursive bool) {
    56  	js.Free(
    57  		p.Origins.Ref(),
    58  		p.Permissions.Ref(),
    59  	)
    60  	p.Origins = p.Origins.FromRef(js.Undefined)
    61  	p.Permissions = p.Permissions.FromRef(js.Undefined)
    62  }
    63  
    64  // HasFuncContains returns true if the function "WEBEXT.permissions.contains" exists.
    65  func HasFuncContains() bool {
    66  	return js.True == bindings.HasFuncContains()
    67  }
    68  
    69  // FuncContains returns the function "WEBEXT.permissions.contains".
    70  func FuncContains() (fn js.Func[func(permissions Permissions) js.Promise[js.Boolean]]) {
    71  	bindings.FuncContains(
    72  		js.Pointer(&fn),
    73  	)
    74  	return
    75  }
    76  
    77  // Contains calls the function "WEBEXT.permissions.contains" directly.
    78  func Contains(permissions Permissions) (ret js.Promise[js.Boolean]) {
    79  	bindings.CallContains(
    80  		js.Pointer(&ret),
    81  		js.Pointer(&permissions),
    82  	)
    83  
    84  	return
    85  }
    86  
    87  // TryContains calls the function "WEBEXT.permissions.contains"
    88  // in a try/catch block and returns (_, err, ok = false) when it went through
    89  // the catch clause.
    90  func TryContains(permissions Permissions) (ret js.Promise[js.Boolean], exception js.Any, ok bool) {
    91  	ok = js.True == bindings.TryContains(
    92  		js.Pointer(&ret), js.Pointer(&exception),
    93  		js.Pointer(&permissions),
    94  	)
    95  
    96  	return
    97  }
    98  
    99  // HasFuncGetAll returns true if the function "WEBEXT.permissions.getAll" exists.
   100  func HasFuncGetAll() bool {
   101  	return js.True == bindings.HasFuncGetAll()
   102  }
   103  
   104  // FuncGetAll returns the function "WEBEXT.permissions.getAll".
   105  func FuncGetAll() (fn js.Func[func() js.Promise[Permissions]]) {
   106  	bindings.FuncGetAll(
   107  		js.Pointer(&fn),
   108  	)
   109  	return
   110  }
   111  
   112  // GetAll calls the function "WEBEXT.permissions.getAll" directly.
   113  func GetAll() (ret js.Promise[Permissions]) {
   114  	bindings.CallGetAll(
   115  		js.Pointer(&ret),
   116  	)
   117  
   118  	return
   119  }
   120  
   121  // TryGetAll calls the function "WEBEXT.permissions.getAll"
   122  // in a try/catch block and returns (_, err, ok = false) when it went through
   123  // the catch clause.
   124  func TryGetAll() (ret js.Promise[Permissions], exception js.Any, ok bool) {
   125  	ok = js.True == bindings.TryGetAll(
   126  		js.Pointer(&ret), js.Pointer(&exception),
   127  	)
   128  
   129  	return
   130  }
   131  
   132  type OnAddedEventCallbackFunc func(this js.Ref, permissions *Permissions) js.Ref
   133  
   134  func (fn OnAddedEventCallbackFunc) Register() js.Func[func(permissions *Permissions)] {
   135  	return js.RegisterCallback[func(permissions *Permissions)](
   136  		fn, abi.FuncPCABIInternal(fn),
   137  	)
   138  }
   139  
   140  func (fn OnAddedEventCallbackFunc) DispatchCallback(
   141  	targetPC uintptr, ctx *js.CallbackContext,
   142  ) {
   143  	args := ctx.Args()
   144  	if len(args) != 1+1 /* js this */ ||
   145  		targetPC != uintptr(abi.FuncPCABIInternal(fn)) {
   146  		js.ThrowInvalidCallbackInvocation()
   147  	}
   148  	var arg0 Permissions
   149  	arg0.UpdateFrom(args[0+1])
   150  	defer arg0.FreeMembers(true)
   151  
   152  	if ctx.Return(fn(
   153  		args[0],
   154  
   155  		mark.NoEscape(&arg0),
   156  	)) {
   157  		return
   158  	}
   159  
   160  	js.ThrowCallbackValueNotReturned()
   161  }
   162  
   163  type OnAddedEventCallback[T any] struct {
   164  	Fn  func(arg T, this js.Ref, permissions *Permissions) js.Ref
   165  	Arg T
   166  }
   167  
   168  func (cb *OnAddedEventCallback[T]) Register() js.Func[func(permissions *Permissions)] {
   169  	return js.RegisterCallback[func(permissions *Permissions)](
   170  		cb, abi.FuncPCABIInternal(cb.Fn),
   171  	)
   172  }
   173  
   174  func (cb *OnAddedEventCallback[T]) DispatchCallback(
   175  	targetPC uintptr, ctx *js.CallbackContext,
   176  ) {
   177  	args := ctx.Args()
   178  	if len(args) != 1+1 /* js this */ ||
   179  		targetPC != uintptr(abi.FuncPCABIInternal(cb.Fn)) {
   180  		js.ThrowInvalidCallbackInvocation()
   181  	}
   182  	var arg0 Permissions
   183  	arg0.UpdateFrom(args[0+1])
   184  	defer arg0.FreeMembers(true)
   185  
   186  	if ctx.Return(cb.Fn(
   187  		cb.Arg,
   188  		args[0],
   189  
   190  		mark.NoEscape(&arg0),
   191  	)) {
   192  		return
   193  	}
   194  
   195  	js.ThrowCallbackValueNotReturned()
   196  }
   197  
   198  // HasFuncOnAdded returns true if the function "WEBEXT.permissions.onAdded.addListener" exists.
   199  func HasFuncOnAdded() bool {
   200  	return js.True == bindings.HasFuncOnAdded()
   201  }
   202  
   203  // FuncOnAdded returns the function "WEBEXT.permissions.onAdded.addListener".
   204  func FuncOnAdded() (fn js.Func[func(callback js.Func[func(permissions *Permissions)])]) {
   205  	bindings.FuncOnAdded(
   206  		js.Pointer(&fn),
   207  	)
   208  	return
   209  }
   210  
   211  // OnAdded calls the function "WEBEXT.permissions.onAdded.addListener" directly.
   212  func OnAdded(callback js.Func[func(permissions *Permissions)]) (ret js.Void) {
   213  	bindings.CallOnAdded(
   214  		js.Pointer(&ret),
   215  		callback.Ref(),
   216  	)
   217  
   218  	return
   219  }
   220  
   221  // TryOnAdded calls the function "WEBEXT.permissions.onAdded.addListener"
   222  // in a try/catch block and returns (_, err, ok = false) when it went through
   223  // the catch clause.
   224  func TryOnAdded(callback js.Func[func(permissions *Permissions)]) (ret js.Void, exception js.Any, ok bool) {
   225  	ok = js.True == bindings.TryOnAdded(
   226  		js.Pointer(&ret), js.Pointer(&exception),
   227  		callback.Ref(),
   228  	)
   229  
   230  	return
   231  }
   232  
   233  // HasFuncOffAdded returns true if the function "WEBEXT.permissions.onAdded.removeListener" exists.
   234  func HasFuncOffAdded() bool {
   235  	return js.True == bindings.HasFuncOffAdded()
   236  }
   237  
   238  // FuncOffAdded returns the function "WEBEXT.permissions.onAdded.removeListener".
   239  func FuncOffAdded() (fn js.Func[func(callback js.Func[func(permissions *Permissions)])]) {
   240  	bindings.FuncOffAdded(
   241  		js.Pointer(&fn),
   242  	)
   243  	return
   244  }
   245  
   246  // OffAdded calls the function "WEBEXT.permissions.onAdded.removeListener" directly.
   247  func OffAdded(callback js.Func[func(permissions *Permissions)]) (ret js.Void) {
   248  	bindings.CallOffAdded(
   249  		js.Pointer(&ret),
   250  		callback.Ref(),
   251  	)
   252  
   253  	return
   254  }
   255  
   256  // TryOffAdded calls the function "WEBEXT.permissions.onAdded.removeListener"
   257  // in a try/catch block and returns (_, err, ok = false) when it went through
   258  // the catch clause.
   259  func TryOffAdded(callback js.Func[func(permissions *Permissions)]) (ret js.Void, exception js.Any, ok bool) {
   260  	ok = js.True == bindings.TryOffAdded(
   261  		js.Pointer(&ret), js.Pointer(&exception),
   262  		callback.Ref(),
   263  	)
   264  
   265  	return
   266  }
   267  
   268  // HasFuncHasOnAdded returns true if the function "WEBEXT.permissions.onAdded.hasListener" exists.
   269  func HasFuncHasOnAdded() bool {
   270  	return js.True == bindings.HasFuncHasOnAdded()
   271  }
   272  
   273  // FuncHasOnAdded returns the function "WEBEXT.permissions.onAdded.hasListener".
   274  func FuncHasOnAdded() (fn js.Func[func(callback js.Func[func(permissions *Permissions)]) bool]) {
   275  	bindings.FuncHasOnAdded(
   276  		js.Pointer(&fn),
   277  	)
   278  	return
   279  }
   280  
   281  // HasOnAdded calls the function "WEBEXT.permissions.onAdded.hasListener" directly.
   282  func HasOnAdded(callback js.Func[func(permissions *Permissions)]) (ret bool) {
   283  	bindings.CallHasOnAdded(
   284  		js.Pointer(&ret),
   285  		callback.Ref(),
   286  	)
   287  
   288  	return
   289  }
   290  
   291  // TryHasOnAdded calls the function "WEBEXT.permissions.onAdded.hasListener"
   292  // in a try/catch block and returns (_, err, ok = false) when it went through
   293  // the catch clause.
   294  func TryHasOnAdded(callback js.Func[func(permissions *Permissions)]) (ret bool, exception js.Any, ok bool) {
   295  	ok = js.True == bindings.TryHasOnAdded(
   296  		js.Pointer(&ret), js.Pointer(&exception),
   297  		callback.Ref(),
   298  	)
   299  
   300  	return
   301  }
   302  
   303  type OnRemovedEventCallbackFunc func(this js.Ref, permissions *Permissions) js.Ref
   304  
   305  func (fn OnRemovedEventCallbackFunc) Register() js.Func[func(permissions *Permissions)] {
   306  	return js.RegisterCallback[func(permissions *Permissions)](
   307  		fn, abi.FuncPCABIInternal(fn),
   308  	)
   309  }
   310  
   311  func (fn OnRemovedEventCallbackFunc) DispatchCallback(
   312  	targetPC uintptr, ctx *js.CallbackContext,
   313  ) {
   314  	args := ctx.Args()
   315  	if len(args) != 1+1 /* js this */ ||
   316  		targetPC != uintptr(abi.FuncPCABIInternal(fn)) {
   317  		js.ThrowInvalidCallbackInvocation()
   318  	}
   319  	var arg0 Permissions
   320  	arg0.UpdateFrom(args[0+1])
   321  	defer arg0.FreeMembers(true)
   322  
   323  	if ctx.Return(fn(
   324  		args[0],
   325  
   326  		mark.NoEscape(&arg0),
   327  	)) {
   328  		return
   329  	}
   330  
   331  	js.ThrowCallbackValueNotReturned()
   332  }
   333  
   334  type OnRemovedEventCallback[T any] struct {
   335  	Fn  func(arg T, this js.Ref, permissions *Permissions) js.Ref
   336  	Arg T
   337  }
   338  
   339  func (cb *OnRemovedEventCallback[T]) Register() js.Func[func(permissions *Permissions)] {
   340  	return js.RegisterCallback[func(permissions *Permissions)](
   341  		cb, abi.FuncPCABIInternal(cb.Fn),
   342  	)
   343  }
   344  
   345  func (cb *OnRemovedEventCallback[T]) DispatchCallback(
   346  	targetPC uintptr, ctx *js.CallbackContext,
   347  ) {
   348  	args := ctx.Args()
   349  	if len(args) != 1+1 /* js this */ ||
   350  		targetPC != uintptr(abi.FuncPCABIInternal(cb.Fn)) {
   351  		js.ThrowInvalidCallbackInvocation()
   352  	}
   353  	var arg0 Permissions
   354  	arg0.UpdateFrom(args[0+1])
   355  	defer arg0.FreeMembers(true)
   356  
   357  	if ctx.Return(cb.Fn(
   358  		cb.Arg,
   359  		args[0],
   360  
   361  		mark.NoEscape(&arg0),
   362  	)) {
   363  		return
   364  	}
   365  
   366  	js.ThrowCallbackValueNotReturned()
   367  }
   368  
   369  // HasFuncOnRemoved returns true if the function "WEBEXT.permissions.onRemoved.addListener" exists.
   370  func HasFuncOnRemoved() bool {
   371  	return js.True == bindings.HasFuncOnRemoved()
   372  }
   373  
   374  // FuncOnRemoved returns the function "WEBEXT.permissions.onRemoved.addListener".
   375  func FuncOnRemoved() (fn js.Func[func(callback js.Func[func(permissions *Permissions)])]) {
   376  	bindings.FuncOnRemoved(
   377  		js.Pointer(&fn),
   378  	)
   379  	return
   380  }
   381  
   382  // OnRemoved calls the function "WEBEXT.permissions.onRemoved.addListener" directly.
   383  func OnRemoved(callback js.Func[func(permissions *Permissions)]) (ret js.Void) {
   384  	bindings.CallOnRemoved(
   385  		js.Pointer(&ret),
   386  		callback.Ref(),
   387  	)
   388  
   389  	return
   390  }
   391  
   392  // TryOnRemoved calls the function "WEBEXT.permissions.onRemoved.addListener"
   393  // in a try/catch block and returns (_, err, ok = false) when it went through
   394  // the catch clause.
   395  func TryOnRemoved(callback js.Func[func(permissions *Permissions)]) (ret js.Void, exception js.Any, ok bool) {
   396  	ok = js.True == bindings.TryOnRemoved(
   397  		js.Pointer(&ret), js.Pointer(&exception),
   398  		callback.Ref(),
   399  	)
   400  
   401  	return
   402  }
   403  
   404  // HasFuncOffRemoved returns true if the function "WEBEXT.permissions.onRemoved.removeListener" exists.
   405  func HasFuncOffRemoved() bool {
   406  	return js.True == bindings.HasFuncOffRemoved()
   407  }
   408  
   409  // FuncOffRemoved returns the function "WEBEXT.permissions.onRemoved.removeListener".
   410  func FuncOffRemoved() (fn js.Func[func(callback js.Func[func(permissions *Permissions)])]) {
   411  	bindings.FuncOffRemoved(
   412  		js.Pointer(&fn),
   413  	)
   414  	return
   415  }
   416  
   417  // OffRemoved calls the function "WEBEXT.permissions.onRemoved.removeListener" directly.
   418  func OffRemoved(callback js.Func[func(permissions *Permissions)]) (ret js.Void) {
   419  	bindings.CallOffRemoved(
   420  		js.Pointer(&ret),
   421  		callback.Ref(),
   422  	)
   423  
   424  	return
   425  }
   426  
   427  // TryOffRemoved calls the function "WEBEXT.permissions.onRemoved.removeListener"
   428  // in a try/catch block and returns (_, err, ok = false) when it went through
   429  // the catch clause.
   430  func TryOffRemoved(callback js.Func[func(permissions *Permissions)]) (ret js.Void, exception js.Any, ok bool) {
   431  	ok = js.True == bindings.TryOffRemoved(
   432  		js.Pointer(&ret), js.Pointer(&exception),
   433  		callback.Ref(),
   434  	)
   435  
   436  	return
   437  }
   438  
   439  // HasFuncHasOnRemoved returns true if the function "WEBEXT.permissions.onRemoved.hasListener" exists.
   440  func HasFuncHasOnRemoved() bool {
   441  	return js.True == bindings.HasFuncHasOnRemoved()
   442  }
   443  
   444  // FuncHasOnRemoved returns the function "WEBEXT.permissions.onRemoved.hasListener".
   445  func FuncHasOnRemoved() (fn js.Func[func(callback js.Func[func(permissions *Permissions)]) bool]) {
   446  	bindings.FuncHasOnRemoved(
   447  		js.Pointer(&fn),
   448  	)
   449  	return
   450  }
   451  
   452  // HasOnRemoved calls the function "WEBEXT.permissions.onRemoved.hasListener" directly.
   453  func HasOnRemoved(callback js.Func[func(permissions *Permissions)]) (ret bool) {
   454  	bindings.CallHasOnRemoved(
   455  		js.Pointer(&ret),
   456  		callback.Ref(),
   457  	)
   458  
   459  	return
   460  }
   461  
   462  // TryHasOnRemoved calls the function "WEBEXT.permissions.onRemoved.hasListener"
   463  // in a try/catch block and returns (_, err, ok = false) when it went through
   464  // the catch clause.
   465  func TryHasOnRemoved(callback js.Func[func(permissions *Permissions)]) (ret bool, exception js.Any, ok bool) {
   466  	ok = js.True == bindings.TryHasOnRemoved(
   467  		js.Pointer(&ret), js.Pointer(&exception),
   468  		callback.Ref(),
   469  	)
   470  
   471  	return
   472  }
   473  
   474  // HasFuncRemove returns true if the function "WEBEXT.permissions.remove" exists.
   475  func HasFuncRemove() bool {
   476  	return js.True == bindings.HasFuncRemove()
   477  }
   478  
   479  // FuncRemove returns the function "WEBEXT.permissions.remove".
   480  func FuncRemove() (fn js.Func[func(permissions Permissions) js.Promise[js.Boolean]]) {
   481  	bindings.FuncRemove(
   482  		js.Pointer(&fn),
   483  	)
   484  	return
   485  }
   486  
   487  // Remove calls the function "WEBEXT.permissions.remove" directly.
   488  func Remove(permissions Permissions) (ret js.Promise[js.Boolean]) {
   489  	bindings.CallRemove(
   490  		js.Pointer(&ret),
   491  		js.Pointer(&permissions),
   492  	)
   493  
   494  	return
   495  }
   496  
   497  // TryRemove calls the function "WEBEXT.permissions.remove"
   498  // in a try/catch block and returns (_, err, ok = false) when it went through
   499  // the catch clause.
   500  func TryRemove(permissions Permissions) (ret js.Promise[js.Boolean], exception js.Any, ok bool) {
   501  	ok = js.True == bindings.TryRemove(
   502  		js.Pointer(&ret), js.Pointer(&exception),
   503  		js.Pointer(&permissions),
   504  	)
   505  
   506  	return
   507  }
   508  
   509  // HasFuncRequest returns true if the function "WEBEXT.permissions.request" exists.
   510  func HasFuncRequest() bool {
   511  	return js.True == bindings.HasFuncRequest()
   512  }
   513  
   514  // FuncRequest returns the function "WEBEXT.permissions.request".
   515  func FuncRequest() (fn js.Func[func(permissions Permissions) js.Promise[js.Boolean]]) {
   516  	bindings.FuncRequest(
   517  		js.Pointer(&fn),
   518  	)
   519  	return
   520  }
   521  
   522  // Request calls the function "WEBEXT.permissions.request" directly.
   523  func Request(permissions Permissions) (ret js.Promise[js.Boolean]) {
   524  	bindings.CallRequest(
   525  		js.Pointer(&ret),
   526  		js.Pointer(&permissions),
   527  	)
   528  
   529  	return
   530  }
   531  
   532  // TryRequest calls the function "WEBEXT.permissions.request"
   533  // in a try/catch block and returns (_, err, ok = false) when it went through
   534  // the catch clause.
   535  func TryRequest(permissions Permissions) (ret js.Promise[js.Boolean], exception js.Any, ok bool) {
   536  	ok = js.True == bindings.TryRequest(
   537  		js.Pointer(&ret), js.Pointer(&exception),
   538  		js.Pointer(&permissions),
   539  	)
   540  
   541  	return
   542  }