admin [Tue, 23 Jun 2020 15:53:29 +0000 (15:53 +0000)]
Release 8.0.0.15316
admin [Tue, 23 Jun 2020 15:53:29 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
wootak [Tue, 23 Jun 2020 06:39:15 +0000 (15:39 +0900)]
[Bluetooth][Non-ACR] Fix GattConnection event not occured issue (#1741)
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
huiyueun [Tue, 23 Jun 2020 02:25:03 +0000 (11:25 +0900)]
[NUI] Modify Component-application window (#1711)
Signed-off-by: huiyu.eun <huiyu.eun@samsung.com>
wootak [Mon, 22 Jun 2020 23:59:33 +0000 (08:59 +0900)]
[Bluetooth][Non-ACR] Fix NULL reference exception issue (#1734)
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
wootak [Mon, 22 Jun 2020 23:59:22 +0000 (08:59 +0900)]
[Bluetooth][Non-ACR] Fix GattConnection event not occured issue (#1735)
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
admin [Mon, 22 Jun 2020 15:55:31 +0000 (15:55 +0000)]
Release 8.0.0.15312
admin [Mon, 22 Jun 2020 15:55:31 +0000 (15:55 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
Jiyun Yang [Mon, 22 Jun 2020 10:24:07 +0000 (19:24 +0900)]
[NUI] Change View.ControlState setter to protected. (#1727)
Setting ControlState is now allowed only in the derived class of View.
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
dongsug-song [Mon, 22 Jun 2020 06:38:53 +0000 (15:38 +0900)]
Revert "[NUI] Move to dali2 (#1717)" (#1733)
This reverts commit
8c3917d68e0739aa01510f7d714f49d178269419.
YeongJong Lee [Mon, 22 Jun 2020 05:38:05 +0000 (14:38 +0900)]
[NUI] fix c&p error (#1721)
Co-authored-by: Yeongjong Lee <yj34.lee@samsung.com>
YeongJong Lee [Mon, 22 Jun 2020 05:32:29 +0000 (14:32 +0900)]
[NUI] remove SelectGroup.ItemGroup setter (#1709)
Since `SelectGroup.ItemGroup` is initialized in `SelectGroup` constructor, it
should not be assigned by api user.
Also, this fixes `CA2227: Collection properties should be read only`.
https://docs.microsoft.com/en-us/visualstudio/code-quality/ca2227?view=vs-2019
YeongJong Lee [Mon, 22 Jun 2020 05:27:53 +0000 (14:27 +0900)]
[NUI] make viewStyle field private (#1680)
Fixes CA1051
YeongJong Lee [Mon, 22 Jun 2020 04:58:48 +0000 (13:58 +0900)]
[NUI] use proper constructor of ArgumentNullException (#1708)
use `ArgumentNullException(string paramName, string message);`
instead of `ArgumentNullException(string paramName);`.
`ArgumentNullException(string message);` doesn't exist.
Also, fixes CA2208
YeongJong Lee [Mon, 22 Jun 2020 04:54:08 +0000 (13:54 +0900)]
[NUI] remove needless delegate for eventhandler (#1707)
Remove needless delegate and use `EventHandler` instead.
Also, this patch will Fix CA1715.
YeongJong Lee [Mon, 22 Jun 2020 04:49:14 +0000 (13:49 +0900)]
[NUI] remove unused parameter from Control.Initialize (#1682)
Fixes CA1801
YeongJong Lee [Mon, 22 Jun 2020 04:44:09 +0000 (13:44 +0900)]
[NUI] replace viewStlye with Style (#1679)
Use `Style` property instead of `viewStyle` field.
neostom432 [Mon, 22 Jun 2020 02:36:55 +0000 (11:36 +0900)]
[NUI] ScrollableBase usage improvement (#1724)
Previously, user should make container for ScrollableBase to contain
children in ScrollableBase and it brought inconvenience to user.
For now, ScrollalbleBase creates its ContentContainer in Constructor so
user doesn't need to add container.
And ScrollableBase overrides Add/Remove function to add/remove child
to/from ContentContainer even if user call ScrollableBase.Add/Remove.
Plus, user can access to children of ContentContainer through
ScrollableBase.Children property and also can acess to Layout too.
Finally, if user want to change property of ContentContainer, they can
use getter of ContentContainer property.
WonYoung Choi [Mon, 22 Jun 2020 01:43:59 +0000 (10:43 +0900)]
[Docs] Update documentation files (#1726)
- Modify description of first page
- Apply material designs
- Apply wide layouts
- Apply Tizen.DocFX.Plugins to provide tizen-specific tags.
MuHong Byun [Mon, 22 Jun 2020 01:43:22 +0000 (10:43 +0900)]
[Sensor] Update sensor description regarding batch sensor. (#1730)
Signed-off-by: MuHong Byun <mh.byun@samsung.com>
admin [Fri, 19 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Release 8.0.0.15300
admin [Fri, 19 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
Xianbing Teng [Fri, 19 Jun 2020 06:07:39 +0000 (14:07 +0800)]
[NUI.Components] Improve sam score to 4.21 (#1720)
Co-authored-by: Xianbing Teng <reformed_beginner@outlook.com>
admin [Thu, 18 Jun 2020 15:51:48 +0000 (15:51 +0000)]
Release 8.0.0.15299
admin [Thu, 18 Jun 2020 15:51:48 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
zhouleonlei [Thu, 18 Jun 2020 06:18:18 +0000 (14:18 +0800)]
[NUI] Fix Svace issues (#1719)
* [NUI] Fix Svace issues
* [NUI] Revert some changes
yl33 [Thu, 18 Jun 2020 04:49:38 +0000 (13:49 +0900)]
Remove deprecated API (#1617)
admin [Wed, 17 Jun 2020 15:51:42 +0000 (15:51 +0000)]
Release 8.0.0.15297
admin [Wed, 17 Jun 2020 15:51:42 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
neostom432 [Wed, 17 Jun 2020 01:50:36 +0000 (10:50 +0900)]
[NUI] Add Scrollbar Proprety to ScrollableBase (#1694)
Add Scrollbar Property to ScrollableBase.
Currently, Scrollbar is always hidden but show if set HideScrollBar to true.
dongsug-song [Wed, 17 Jun 2020 00:59:32 +0000 (09:59 +0900)]
[NUI] Move to dali2 (#1717)
admin [Tue, 16 Jun 2020 15:53:23 +0000 (15:53 +0000)]
Release 8.0.0.15295
admin [Tue, 16 Jun 2020 15:53:23 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
zhouleonlei [Tue, 16 Jun 2020 10:00:32 +0000 (18:00 +0800)]
[NUI] Remove deprecated APIs in Slider and Switch (#1716)
zhouleonlei [Tue, 16 Jun 2020 07:29:33 +0000 (15:29 +0800)]
[NUI] Remove the Loading API of Images (#1714)
Xianbing Teng [Tue, 16 Jun 2020 06:27:38 +0000 (14:27 +0800)]
[NUI.Components]Improve SAM score of NUI.Components (#1713)
Co-authored-by: Xianbing Teng <reformed_beginner@outlook.com>
zhouleonlei [Tue, 16 Jun 2020 05:38:08 +0000 (13:38 +0800)]
[NUI] Change button APIs and modify related Samples (#1712)
tscholb [Tue, 16 Jun 2020 01:54:30 +0000 (10:54 +0900)]
[NUI] Constructor of NUIWidgetApplication is opened public in API level7 (#1241)
For apply multiple class of Widget, this API need to open public
tscholb [Tue, 16 Jun 2020 01:52:52 +0000 (10:52 +0900)]
[NUI] Add Feature for multi window (#1605)
Add Feature to support opengles.surfaceless_context
This feature is used to check whether multi-window is supported.
https://code.sec.samsung.net/jira/browse/TCSACR-298
Seungkeun Lee [Tue, 16 Jun 2020 01:17:26 +0000 (10:17 +0900)]
[NFC] Fix Native callback GC issue (#1674)
* [NFC] Fix Native callback GC issue
* Add comment about explicitly delegate convertion
admin [Mon, 15 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Release 8.0.0.15288
admin [Mon, 15 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
YeongJong Lee [Mon, 15 Jun 2020 03:04:15 +0000 (12:04 +0900)]
[NUI] GridLayout Refactoring to support column, row, spacing, weight, align (#1655)
* [NUI] LayoutGroup: Support child property
* [NUI] GridLayout Refactoring to support column, row, spacing, alignment
1) Add ColumnSpacing, RowSpacing(GridLayout Property)
This is GridLayout properties for the distance between columns, rows.
2) Add Column, ColumnSpan, Row, RowSpan(Child Property)
This is child properties for specific cell index to layout. `SetChildValue` is
added to support child property using Attached Bindable Property.
If the Column(Row) isn't defined, it is automatically assigned left to right or
top to bottom depending on `GridOrientation`(RTL is not supported yet).
The main axis count(Columns on Horizontal mode, Rows otherwise) won't be
exceeded explicit column(row) count which is assigned by
Property(`Columns`(`Rows`)). otherwise, cross axis count(row(column))
can be increased.
Children with automatically assigned Column(Row) don't overlap. but,
children with specific Column and Row can overlap with the other children.
To respect child width(height), each cell size is determined by the maximum
size among Columns(Rows) it belongs to. Greedy Algorithm is used to find
maximum size of each Columns(Rows) that is same problem to find longest path
in DAG(Directed Acyclic Graph).
3) Add HorizontalAlignment, VerticalAlignment(Child Property)
The child properties how child is laid out in the cell.(Start, End, Center)
admin [Fri, 12 Jun 2020 15:53:21 +0000 (15:53 +0000)]
Release 8.0.0.15287
admin [Fri, 12 Jun 2020 15:53:21 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
woohyun [Fri, 12 Jun 2020 07:43:28 +0000 (16:43 +0900)]
[NUI] replace field declaration with property (#1703)
This would fix CA1051 warnings which indicates that
"Do not declare visible instance fields".
This patch restores the diff in
409a8ccea4f26cd7ca4db8e2549e81aac09121a2
except the modification on opened API.
Co-authored-by: WooHyun Jung <wh0705.jung@samsung.com>
woohyun [Fri, 12 Jun 2020 06:13:41 +0000 (15:13 +0900)]
Revert "[NUI] replace field declaration with property (#1701)" (#1702)
This reverts commit
409a8ccea4f26cd7ca4db8e2549e81aac09121a2.
woohyun [Fri, 12 Jun 2020 05:25:28 +0000 (14:25 +0900)]
[NUI] replace field declaration with property (#1701)
This would fix CA1051 warnings which indicates that
"Do not declare visible instance fields".
admin [Thu, 11 Jun 2020 15:55:19 +0000 (15:55 +0000)]
Release 8.0.0.15284
admin [Thu, 11 Jun 2020 15:55:19 +0000 (15:55 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
WonYoung Choi [Thu, 11 Jun 2020 10:23:20 +0000 (19:23 +0900)]
[Docs] Fix the list in API References (#1698)
neostom432 [Thu, 11 Jun 2020 05:28:06 +0000 (14:28 +0900)]
[NUI] Add GridRecycleLayotManager (#1685)
Grid Layout for RecyclerView.
When user set Orientation, GridRecycleLayoutManager will lay out items using only one factor between Row and Column.
Horizontal => Row
Vertical => Column
wootak [Thu, 11 Jun 2020 05:28:00 +0000 (14:28 +0900)]
[Bluetooth][Non-ACR] Fix Native callback GC issue (#1678)
Signed-off-by: Wootak Jung <wootak.jung@samsung.com>
neostom432 [Thu, 11 Jun 2020 04:08:13 +0000 (13:08 +0900)]
[NUI] Change ScrollableBase clipping mode (#1690)
huiyueun [Thu, 11 Jun 2020 02:38:19 +0000 (11:38 +0900)]
Revert "[NUI] Add MIN_LINE_SIZE property at TextLabel (#1619)" (#1687)
This reverts commit
b949a3d1015a0ce1ad9831ca91c58b13437d4cef.
huiyueun [Thu, 11 Jun 2020 01:38:46 +0000 (10:38 +0900)]
Revert "[NUI]TextField: SelectNone and SelectedText (#1611)" (#1686)
This reverts commit
a50c933512257fd854f3b173356802566f016f5c.
admin [Wed, 10 Jun 2020 15:53:34 +0000 (15:53 +0000)]
Release 8.0.0.15278
admin [Wed, 10 Jun 2020 15:53:34 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
zhouleonlei [Wed, 10 Jun 2020 11:57:06 +0000 (19:57 +0800)]
[NUI] Add command for button (#1647)
* [NUI] Add command for button
* [NUI] Add Command XAML sample
YeongJong Lee [Wed, 10 Jun 2020 09:20:42 +0000 (18:20 +0900)]
[NUI] remove margin, padding calculation for AbsoluteLayout child size (#1668)
Since child position property and dali position property that decides
real position of controls are shared as same property(View.Position),
AbsoluteLayout cannot respect margin, padding for child position. so,
we don't need to calculate size with margin, padding.
YeongJong Lee [Wed, 10 Jun 2020 08:35:47 +0000 (17:35 +0900)]
[NUI] cleanup MeasureChild Methods (#1684)
- Duplicated Padding accumulation is removed.
- Use `MeasureChildWithMargins` to consider Margin.
No logical changes.
YeongJong Lee [Wed, 10 Jun 2020 08:08:39 +0000 (17:08 +0900)]
[NUI] introduce CreateViewStyle that is alternative to GetViewStyle (#1681)
`CreateViewStyle` is alternative method of `GetViewStyle`.
To resolve CA1721, please use `CreateViewStyle` instead.
```
warning CA1721: The property name 'ViewStyle' is confusing given the existence of
method 'GetViewStyle'. Rename or remove one of these members.
```
`GetViewStyle` should be deprecated(or removed) if there is no
compatibility issue.
WonYoung Choi [Tue, 9 Jun 2020 23:52:58 +0000 (08:52 +0900)]
[Build] Add struct validation at GBS build-time (#1660)
admin [Tue, 9 Jun 2020 15:53:39 +0000 (15:53 +0000)]
Release 8.0.0.15273
admin [Tue, 9 Jun 2020 15:53:39 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
jaehyun0cho [Tue, 9 Jun 2020 10:12:06 +0000 (19:12 +0900)]
[NUI] Resolve CA1823 of StyleCop (#1669)
To resolve CA1823 of StyleCop in Tizen.NUI.Components and
Tizen.NUI.Wearable, unused variables are removed.
'isNeedAnimation' in CircularPagination.cs is not removed because it is
marked as 'TODO'.
Co-authored-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
Seungkeun Lee [Tue, 9 Jun 2020 08:36:31 +0000 (17:36 +0900)]
[Security] Fix PrivacyPrivilegeManager.RequestPermissions crash issue (#1650)
neostom432 [Tue, 9 Jun 2020 08:01:27 +0000 (17:01 +0900)]
[NUI] Calculate MaxScrollDistance in Relayout (#1665)
jaehyun0cho [Tue, 9 Jun 2020 07:12:07 +0000 (16:12 +0900)]
[NUI] Resolve CA1802 of StyleCop (#1667)
To resolve CA1802 of StyleCop in Tizen.NUI.Components and
Tizen.NUI.Wearable, static readonly is replaced with const.
Co-authored-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
woohyun [Tue, 9 Jun 2020 05:24:06 +0000 (14:24 +0900)]
[NUI] Fix style loading issue when extending control classes (#1550)
When a NUI.Component.Control class was extended, the default style
was not loaded well.
This was because searching style logic was executed with not whole base classes
but only with the inherited class.
Co-authored-by: WooHyun Jung <wh0705.jung@samsung.com>
zhouleonlei [Tue, 9 Jun 2020 05:20:55 +0000 (13:20 +0800)]
[NUI] Replace paginationStyle with Style (#1663)
Seoyeon2Kim [Tue, 9 Jun 2020 05:14:19 +0000 (14:14 +0900)]
[NUI] Add CircularSlider to Wearable Component (#1659)
* [NUI] Add CircularSlider to Wearable Component
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
* Update implementation according to reviews
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
JoogabYun [Tue, 9 Jun 2020 04:46:04 +0000 (13:46 +0900)]
[NUI] Add MIN_LINE_SIZE property at TextLabel (#1619)
Seoyeon2Kim [Tue, 9 Jun 2020 01:52:02 +0000 (10:52 +0900)]
[NUI] Update Wearable default style (#1664)
- Added default indicator size to CircularPagination.
- Changed the names of bindable properties.
- Added Stop() before creating Animation with visual.
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
admin [Mon, 8 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Release 8.0.0.15264
admin [Mon, 8 Jun 2020 15:51:46 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
zhouleonlei [Mon, 8 Jun 2020 11:34:07 +0000 (19:34 +0800)]
[NUI]Add layouts and refine codes for Samples (#1595)
* [NUI]Add layouts and refine codes for Samples
* [NUI] Modified app path issue and layout
* [NUI] Modified ItemView
* [NUI] Modify layout and display issues
* [NUI] Remove Style
WonYoung Choi [Mon, 8 Jun 2020 06:59:42 +0000 (15:59 +0900)]
Remove unused test applications (#1661)
zhouleonlei [Mon, 8 Jun 2020 03:01:29 +0000 (11:01 +0800)]
[NUI] Add ApplyStyle for Pagination (#1649)
admin [Fri, 5 Jun 2020 15:53:35 +0000 (15:53 +0000)]
Release 8.0.0.15261
admin [Fri, 5 Jun 2020 15:53:35 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
WonYoung Choi [Fri, 5 Jun 2020 08:24:48 +0000 (17:24 +0900)]
Remove unused test applications (#1615)
Seoyeon2Kim [Fri, 5 Jun 2020 04:17:20 +0000 (13:17 +0900)]
[NUI] Remove unnecessary opacity in CircularProgress (#1653)
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
dh79pyun [Thu, 4 Jun 2020 23:45:15 +0000 (08:45 +0900)]
[Bluetooth][Non-ACR] Add NULL check logic for Marshal.PtrToStringAnsi (#1657)
This patchset is to avoid ArgumentNullException error. There are some
cases to come NULL variable from Native API.
BluetoothAdapterImpl.cs: RegisterDiscoveryStateChangedEvent(258) > Discovery state changed callback is called
Unhandled exception.
System.ArgumentNullException: Value cannot be null. (Parameter 'ptr')
at System.Runtime.InteropServices.Marshal.PtrToStringAnsi(IntPtr ptr, Int32 len)
at Tizen.Network.Bluetooth.BluetoothUtils.ConvertStructToDiscoveredDevice(BluetoothDiscoveredDeviceStruct structDevice)
at Tizen.Network.Bluetooth.BluetoothAdapterImpl.<RegisterDiscoveryStateChangedEvent>b__45_0(Int32 result, BluetoothDeviceDiscoveryState state, IntPtr deviceInfo, IntPtr user
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
admin [Thu, 4 Jun 2020 15:51:47 +0000 (15:51 +0000)]
Release 8.0.0.15258
admin [Thu, 4 Jun 2020 15:51:47 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
huayongxu [Thu, 4 Jun 2020 06:21:34 +0000 (14:21 +0800)]
add internal visibility for NUI.Components.DA temporarily. (#1654)
jaehyun0cho [Thu, 4 Jun 2020 04:43:37 +0000 (13:43 +0900)]
[NUI] Fix ScrollTo to move pan position to the argument position (#1652)
Previously, ScrollTo moved pan position including the ScrollableBase's
current position.
e.g. ScrollTo(360, true); //moves by 360
ScrollTo(0, true); //moves by 360 again based on current position
The argument position is the new pan position. So the new position of
ScrollableBase becomes (-position).
To move ScrollableBase's position to (-position), it moves by
(-position - currentPosition).
Co-authored-by: Jaehyun Cho <jae_hyun.cho@samsung.com>
neostom432 [Thu, 4 Jun 2020 03:27:53 +0000 (12:27 +0900)]
[NUI] Fix LinearListLayoutManager (#1645)
Change Layout and Recycle rule for linear layout.
Ali-Alzyoud [Thu, 4 Jun 2020 02:24:33 +0000 (05:24 +0300)]
[NUI]TextField: SelectNone and SelectedText (#1611)
* TextField: SelectNone and SelectedText
* Update NDalicPINVOKE.cs
* Update NDalicPINVOKE.cs
JoogabYun [Thu, 4 Jun 2020 02:22:38 +0000 (11:22 +0900)]
[NUI] circular text (#1634)
admin [Tue, 2 Jun 2020 15:53:39 +0000 (15:53 +0000)]
Release 8.0.0.15253
admin [Tue, 2 Jun 2020 15:53:39 +0000 (15:53 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
msaltnet [Tue, 2 Jun 2020 10:11:57 +0000 (19:11 +0900)]
[Notification] Fix wrong example code comments (#1538)
Co-authored-by: salt.jeong <salt.jeong@samsung.com>
zhouleonlei [Tue, 2 Jun 2020 08:04:45 +0000 (16:04 +0800)]
[NUI] Made the value of Size be consistent with Specification (#1646)
dh79pyun [Tue, 2 Jun 2020 01:48:47 +0000 (10:48 +0900)]
[Bluetooth][Non-ACR] Fix the crash in GetBondedDevices API (#1643)
The manufacture data can be filled without NULL termination.
Because it is the byte array type. So we should define it as
IntPrt instead of string to avoid the buffer overflow.
Exception !!!: System.Runtime.InteropServices.COMException (0x8007007A): The data area passed to a system call is too small.
at System.StubHelpers.ValueClassMarshaler.ConvertToNative(IntPtr dst, IntPtr src, IntPtr pMT, CleanupWorkListElement& pCleanupWorkList)
at Tizen.Network.Bluetooth.BluetoothAdapterImpl.GetBondedDevices()
at Tizen.Network.Bluetooth.BluetoothAdapter.GetBondedDevices()
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
admin [Mon, 1 Jun 2020 15:51:48 +0000 (15:51 +0000)]
Release 8.0.0.15250
admin [Mon, 1 Jun 2020 15:51:48 +0000 (15:51 +0000)]
Merge remote-tracking branch 'origin/master' into tizen
Seoyeon2Kim [Mon, 1 Jun 2020 08:08:28 +0000 (17:08 +0900)]
[NUI] Add the default images of Pagination (#1641)
- Even though users don't set Pagination images separately,
the default images would be shown.
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
chleun-moon [Mon, 1 Jun 2020 02:05:19 +0000 (11:05 +0900)]
[Connection] Update documents for state/type (#1637)
* Update documents
* Add exception description
* Remove wrong privilege