Add C# test app for PrivacyPrivilegeManager 45/159545/3
authorPiotr Sawicki <p.sawicki2@partner.samsung.com>
Thu, 9 Nov 2017 14:15:18 +0000 (15:15 +0100)
committerPiotr Sawicki <p.sawicki2@partner.samsung.com>
Thu, 9 Nov 2017 14:52:17 +0000 (15:52 +0100)
Change-Id: I73480c06c35b061de2500ab4820e93972beb7d9c

test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.sln [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.cs [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.csproj [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/shared/res/PrivacyPrivilegeManagerTest.Tizen.png [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/tizen-manifest.xml [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.cs [new file with mode: 0755]
test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.csproj [new file with mode: 0755]

diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.sln b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.sln
new file mode 100755 (executable)
index 0000000..3d5402f
--- /dev/null
@@ -0,0 +1,30 @@
+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
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.cs b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.cs
new file mode 100755 (executable)
index 0000000..3f276a6
--- /dev/null
@@ -0,0 +1,20 @@
+using System;\r
+\r
+namespace PrivacyPrivilegeManagerTest.Tizen\r
+{\r
+    class Program : global::Xamarin.Forms.Platform.Tizen.FormsApplication\r
+    {\r
+        protected override void OnCreate()\r
+        {\r
+            base.OnCreate();\r
+            LoadApplication(new App());\r
+        }\r
+\r
+        static void Main(string[] args)\r
+        {\r
+            var app = new Program();\r
+            global::Xamarin.Forms.Platform.Tizen.Forms.Init(app);\r
+            app.Run(args);\r
+        }\r
+    }\r
+}\r
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.csproj b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/PrivacyPrivilegeManagerTest.Tizen.csproj
new file mode 100755 (executable)
index 0000000..c991fbd
--- /dev/null
@@ -0,0 +1,34 @@
+<Project Sdk="Microsoft.NET.Sdk">\r
+\r
+  <!-- Property Group for Tizen40 Project -->\r
+  <PropertyGroup>\r
+    <OutputType>Exe</OutputType>\r
+    <TargetFramework>tizen40</TargetFramework>\r
+  </PropertyGroup>\r
+\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugType>portable</DebugType>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>None</DebugType>\r
+  </PropertyGroup>\r
+\r
+  <ItemGroup>\r
+    <Folder Include="lib\" />\r
+    <Folder Include="res\" />\r
+  </ItemGroup>\r
+\r
+\r
+  <!-- If solution already has PCL project, will reference -->\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\PrivacyPrivilegeManagerTest\PrivacyPrivilegeManagerTest.csproj" />\r
+  </ItemGroup>\r
+\r
+\r
+  <!-- Include Nuget Package for Tizen Project building -->\r
+  <ItemGroup>\r
+    <PackageReference Include="Tizen.NET" Version="4.0.0-preview1-00334" />\r
+    <PackageReference Include="Tizen.NET.Sdk" Version="1.0.0-pre3" />\r
+    <PackageReference Include="Xamarin.Forms.Platform.Tizen" Version="2.4.0-r269-002" />\r
+  </ItemGroup>\r
+</Project>\r
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/shared/res/PrivacyPrivilegeManagerTest.Tizen.png b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/shared/res/PrivacyPrivilegeManagerTest.Tizen.png
new file mode 100755 (executable)
index 0000000..9f3cb98
Binary files /dev/null and b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/shared/res/PrivacyPrivilegeManagerTest.Tizen.png differ
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/tizen-manifest.xml b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.Tizen/tizen-manifest.xml
new file mode 100755 (executable)
index 0000000..eca9f0d
--- /dev/null
@@ -0,0 +1,31 @@
+<?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
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.cs b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.cs
new file mode 100755 (executable)
index 0000000..46f4a8a
--- /dev/null
@@ -0,0 +1,200 @@
+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
diff --git a/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.csproj b/test/apps/csapi/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest/PrivacyPrivilegeManagerTest.csproj
new file mode 100755 (executable)
index 0000000..dafdeb2
--- /dev/null
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">\r
+\r
+  <PropertyGroup>\r
+    <TargetFramework>netstandard2.0</TargetFramework>\r
+  </PropertyGroup>\r
+\r
+  <!-- Include Nuget Package for Xamarin building -->\r
+  <ItemGroup>\r
+    <PackageReference Include="Tizen.NET" Version="4.0.0-preview1-00334" />\r
+    <PackageReference Include="Xamarin.Forms" Version="2.4.0.269-pre2" />\r
+  </ItemGroup>\r
+\r
+</Project>\r