--- /dev/null
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+VisualStudioVersion = 15.0.26730.16\r
+MinimumVisualStudioVersion = 10.0.40219.1\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrivacyPrivilegeManagerTest", "PrivacyPrivilegeManagerTest\PrivacyPrivilegeManagerTest\PrivacyPrivilegeManagerTest.csproj", "{8AD1D220-EA47-4DB4-9DD8-0EC6F48F79DC}"\r
+EndProject\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrivacyPrivilegeManagerTest.Tizen", "PrivacyPrivilegeManagerTest\PrivacyPrivilegeManagerTest.Tizen\PrivacyPrivilegeManagerTest.Tizen.csproj", "{A48D3704-D009-4C7F-AF76-3C1A7AEFE37A}"\r
+EndProject\r
+Global\r
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+ Debug|Any CPU = Debug|Any CPU\r
+ Release|Any CPU = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+ {8AD1D220-EA47-4DB4-9DD8-0EC6F48F79DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {8AD1D220-EA47-4DB4-9DD8-0EC6F48F79DC}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {8AD1D220-EA47-4DB4-9DD8-0EC6F48F79DC}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {8AD1D220-EA47-4DB4-9DD8-0EC6F48F79DC}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ {A48D3704-D009-4C7F-AF76-3C1A7AEFE37A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+ {A48D3704-D009-4C7F-AF76-3C1A7AEFE37A}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+ {A48D3704-D009-4C7F-AF76-3C1A7AEFE37A}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+ {A48D3704-D009-4C7F-AF76-3C1A7AEFE37A}.Release|Any CPU.Build.0 = Release|Any CPU\r
+ EndGlobalSection\r
+ GlobalSection(SolutionProperties) = preSolution\r
+ HideSolutionNode = FALSE\r
+ EndGlobalSection\r
+ GlobalSection(ExtensibilityGlobals) = postSolution\r
+ SolutionGuid = {174B3564-6A05-457E-B881-BC171D98B5E3}\r
+ EndGlobalSection\r
+EndGlobal\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<manifest package="org.tizen.PrivacyPrivilegeManagerTest.Tizen" version="1.0.0" api-version="4.0" xmlns="http://tizen.org/ns/packages">\r
+ <profile name="common" />\r
+ <ui-application appid="org.tizen.PrivacyPrivilegeManagerTest.Tizen" exec="PrivacyPrivilegeManagerTest.Tizen.dll" multiple="false" nodisplay="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">\r
+ <label>PrivacyPrivilegeManagerTest.Tizen</label>\r
+ <icon>PrivacyPrivilegeManagerTest.Tizen.png</icon>\r
+ <metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" />\r
+ </ui-application>\r
+ <shortcut-list />\r
+ <privileges>\r
+ <privilege>http://tizen.org/privilege/account.read</privilege>\r
+ <privilege>http://tizen.org/privilege/account.write</privilege>\r
+ <privilege>http://tizen.org/privilege/apphistory.read</privilege>\r
+ <privilege>http://tizen.org/privilege/calendar.read</privilege>\r
+ <privilege>http://tizen.org/privilege/calendar.write</privilege>\r
+ <privilege>http://tizen.org/privilege/call</privilege>\r
+ <privilege>http://tizen.org/privilege/callhistory.read</privilege>\r
+ <privilege>http://tizen.org/privilege/callhistory.write</privilege>\r
+ <privilege>http://tizen.org/privilege/camera</privilege>\r
+ <privilege>http://tizen.org/privilege/contact.read</privilege>\r
+ <privilege>http://tizen.org/privilege/contact.write</privilege>\r
+ <privilege>http://tizen.org/privilege/healthinfo</privilege>\r
+ <privilege>http://tizen.org/privilege/location</privilege>\r
+ <privilege>http://tizen.org/privilege/location.coarse</privilege>\r
+ <privilege>http://tizen.org/privilege/mediahistory.read</privilege>\r
+ <privilege>http://tizen.org/privilege/message.read</privilege>\r
+ <privilege>http://tizen.org/privilege/message.write</privilege>\r
+ <privilege>http://tizen.org/privilege/recorder</privilege>\r
+ </privileges>\r
+ <provides-appdefined-privileges />\r
+</manifest>\r
--- /dev/null
+using System;\r
+using Tizen.Security;\r
+using Tizen;\r
+using Xamarin.Forms;\r
+\r
+namespace PrivacyPrivilegeManagerTest\r
+{\r
+ public class App : Application\r
+ {\r
+ Label messageLabel;\r
+ const string TEST_APP_TAG = "PPM_Tester";\r
+ const string selectPrivilegeMessage = "Please select privilege!";\r
+ string selectedPrivilege = null;\r
+\r
+ String[] privileges = new String[]\r
+ {\r
+ "http://tizen.org/privilege/account.read",\r
+ "http://tizen.org/privilege/account.write",\r
+ "http://tizen.org/privilege/apphistory.read",\r
+ "http://tizen.org/privilege/calendar.read",\r
+ "http://tizen.org/privilege/calendar.write",\r
+ "http://tizen.org/privilege/call",\r
+ "http://tizen.org/privilege/callhistory.read",\r
+ "http://tizen.org/privilege/callhistory.write",\r
+ "http://tizen.org/privilege/camera",\r
+ "http://tizen.org/privilege/contact.read",\r
+ "http://tizen.org/privilege/contact.write",\r
+ "http://tizen.org/privilege/healthinfo",\r
+ "http://tizen.org/privilege/location",\r
+ "http://tizen.org/privilege/location.coarse",\r
+ "http://tizen.org/privilege/mediahistory.read",\r
+ "http://tizen.org/privilege/message.read",\r
+ "http://tizen.org/privilege/message.write",\r
+ "http://tizen.org/privilege/recorder"\r
+ };\r
+\r
+ public App()\r
+ {\r
+ // Check permission\r
+ Button checkPermissionButton = new Button\r
+ {\r
+ Text = "Check permission",\r
+ BackgroundColor = Color.IndianRed,\r
+ HorizontalOptions = LayoutOptions.Center,\r
+ WidthRequest = 400\r
+ };\r
+\r
+ checkPermissionButton.Clicked += (sender, ev) =>\r
+ OnCheckPermissionButtonCliecked(sender, ev, selectedPrivilege);\r
+\r
+ // Request permission\r
+ Button requestPermissionButton = new Button\r
+ {\r
+ Text = "Request permission",\r
+ BackgroundColor = Color.LightGreen,\r
+ TextColor = Color.Black,\r
+ HorizontalOptions = LayoutOptions.Center,\r
+ WidthRequest = 400\r
+ };\r
+\r
+ requestPermissionButton.Clicked += (sender, ev) =>\r
+ OnRequestPermissionButtonClicked(sender, ev, selectedPrivilege);\r
+\r
+ messageLabel = new Label\r
+ {\r
+ Text = selectPrivilegeMessage,\r
+ HorizontalOptions = LayoutOptions.Center,\r
+ FontSize = 15\r
+ };\r
+\r
+ var privilegeList = new ListView\r
+ {\r
+ ItemsSource = privileges\r
+ };\r
+\r
+ privilegeList.ItemTemplate = new DataTemplate(() =>\r
+ {\r
+ var privilegeLabel = new Label\r
+ {\r
+ FontSize = 15\r
+ };\r
+\r
+ privilegeLabel.SetBinding(Label.TextProperty, ".");\r
+\r
+ return new ViewCell\r
+ {\r
+ View = new StackLayout\r
+ {\r
+ Padding = new Thickness(0, 10),\r
+ Orientation = StackOrientation.Horizontal,\r
+ Children =\r
+ {\r
+ new StackLayout\r
+ {\r
+ VerticalOptions = LayoutOptions.Center,\r
+ Spacing = 0,\r
+ Children =\r
+ {\r
+ privilegeLabel\r
+ }\r
+ }\r
+ }\r
+ }\r
+ };\r
+ });\r
+\r
+ privilegeList.ItemSelected += (sender, e) =>\r
+ {\r
+ selectedPrivilege = (string) e.SelectedItem;\r
+ };\r
+\r
+ MainPage = new ContentPage\r
+ {\r
+ Content = new StackLayout\r
+ {\r
+ Children = {\r
+ new Label {\r
+ HorizontalTextAlignment = TextAlignment.Center,\r
+ Text = "PrivacyPrivilegeManager Test App"\r
+ },\r
+ checkPermissionButton,\r
+ requestPermissionButton,\r
+ messageLabel,\r
+ privilegeList\r
+ }\r
+ }\r
+ };\r
+ }\r
+\r
+ private void PPMResponseHandler(object sender, RequestResponseEventArgs e)\r
+ {\r
+ if (e.cause == CallCause.Error)\r
+ {\r
+ Log.Error(TEST_APP_TAG, "An error occured during handling response for " + e.privilege);\r
+ messageLabel.Text = "PPM response error for privilege: " + e.privilege;\r
+ return;\r
+ }\r
+\r
+ messageLabel.Text = e.result + " " + e.privilege;\r
+ Log.Debug(TEST_APP_TAG, "Request result: " + e.result + " for " + e.privilege);\r
+ }\r
+\r
+ private void OnRequestPermissionButtonClicked(object sender, EventArgs e, string privilege)\r
+ {\r
+ if (privilege == null)\r
+ {\r
+ messageLabel.Text = selectPrivilegeMessage;\r
+ return;\r
+ }\r
+\r
+ try\r
+ {\r
+ PrivacyPrivilegeManager.RequestPermission(privilege);\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ Log.Info(TEST_APP_TAG, "Exception during requesting permission " + ex);\r
+ }\r
+ }\r
+\r
+ private void OnCheckPermissionButtonCliecked(object sender, EventArgs e, string privilege)\r
+ {\r
+ if (privilege == null)\r
+ {\r
+ messageLabel.Text = selectPrivilegeMessage;\r
+ return;\r
+ }\r
+\r
+ try\r
+ {\r
+ CheckResult result = PrivacyPrivilegeManager.CheckPermission(privilege);\r
+ Log.Debug(TEST_APP_TAG, "Check result " + result + " for " + privilege);\r
+ messageLabel.Text = result + " " + privilege;\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ Log.Info(TEST_APP_TAG, "Exception during checking permission " + ex);\r
+ }\r
+ }\r
+\r
+ private void SetupPPMHandler(string privilege)\r
+ {\r
+ if (PrivacyPrivilegeManager\r
+ .GetResponseContext(privilege)\r
+ .TryGetTarget(out PrivacyPrivilegeManager.ResponseContext context))\r
+ {\r
+ context.ResponseFetched += PPMResponseHandler;\r
+ }\r
+ }\r
+\r
+ protected override void OnStart()\r
+ {\r
+ foreach (var privilege in privileges)\r
+ {\r
+ SetupPPMHandler(privilege);\r
+ }\r
+ }\r
+\r
+ }\r
+}\r