--- /dev/null
+Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+Harsha Shekar <h.shekar@samsung.com>
\ No newline at end of file
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)\r
+PROJECT(drm-client CXX)\r
+\r
+#Verbose\r
+#SET(CMAKE_VERBOSE_MAKEFILE ON)\r
+\r
+# Message\r
+#MESSAGE("FLAGS: ${CMAKE_C_FLAGS}")\r
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})\r
+SET(LIBDIR ${PREFIX}/lib)\r
+SET(INCLUDEDIR ${PREFIX}/include)\r
+SET(VERSION 0.0.1)\r
+\r
+SET(SRCS\r
+ service/drm_client.cpp\r
+ service/drm_client_ipc.cpp\r
+)\r
+\r
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)\r
+\r
+SET(extapi "-fvisibility=hidden")\r
+SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${extapi}")\r
+\r
+#SET(DEBUG "-Wall -Werror -ggdb3 -fno-omit-frame-pointer -rdynamic -fno-optimize-sibling-calls -fstack-protector-all")\r
+#SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${DEBUG}")\r
+\r
+INCLUDE(FindPkgConfig)\r
+pkg_check_modules(exppkgs REQUIRED dlog capi-base-common glib-2.0)\r
+\r
+FOREACH(flag ${exppkgs_CFLAGS})\r
+ SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")\r
+ENDFOREACH(flag)\r
+\r
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}")\r
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})\r
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} "-ldl" )\r
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${exppkgs_LDFLAGS})\r
+SET_TARGET_PROPERTIES(\r
+ drm-client\r
+ PROPERTIES\r
+ SOVERSION 0\r
+ VERSION 0.0.1\r
+)\r
+\r
+FIND_PROGRAM(UNAME NAMES uname)\r
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")\r
+IF("${ARCH}" STREQUAL "arm")\r
+ ADD_DEFINITIONS("-DTARGET")\r
+ MESSAGE("add -DTARGET")\r
+ENDIF("${ARCH}" STREQUAL "arm")\r
+\r
+CONFIGURE_FILE(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc)\r
+INSTALL(FILES ${PROJECT_NAME}.pc DESTINATION lib/pkgconfig)\r
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)\r
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION /usr/include/drm-client/)\r
--- /dev/null
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
--- /dev/null
+#!/bin/sh
+
+#Modify path to local TETware folder
+export TET_INSTALL_PATH=/path/to/TETware
+if [ ! -d "$TET_INSTALL_PATH" ]; then
+ echo "TET_INSTALL_PATH = $TET_INSTALL_PATH doesn't exist"
+ echo "Modify this script build.sh with tetware directory"
+ exit
+fi
+
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+#FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+#HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html
+#JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal
+
+DATE=$(date +'%Y.%m.%d_%H.%M')
+HTML_RESULT=$RESULT_DIR/drm_tc_build_result_$DATE.html
+JOURNAL_RESULT=$RESULT_DIR/drm_tc_build_result_$DATE.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -c -p ./
+tcc -b -j $JOURNAL_RESULT -p ./
+
+# Log Levels
+# LOG_LEVEL=3 prints only tet_infoline
+# LOG_LEVEL=7 prints only tet_infoline & tet_printf
+LOG_LEVEL=7
+grw -c $LOG_LEVEL -f chtml -o $HTML_RESULT $JOURNAL_RESULT
+
+# Copy the results outside drm-client
+echo "Copy the results outside drm-client & in folder drm_tc_results_client"
+mkdir -p ../../drm_tc_results_client
+cp $RESULT_DIR/drm_tc_build_result_$DATE.html ../../drm_tc_results_client/
--- /dev/null
+#!/bin/sh
+
+#Modify path to TETware folder on target
+export TET_INSTALL_PATH=/path/to/TETware
+if [ ! -d "$TET_INSTALL_PATH" ]; then
+ echo "TET_INSTALL_PATH = $TET_INSTALL_PATH doesn't exist"
+ echo "Modify this script execute.sh with tetware directory"
+ exit
+fi
+
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+#FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+#HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html
+#JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal
+
+DATE=$(date +'%Y.%m.%d_%H.%M')
+HTML_RESULT=$RESULT_DIR/drm_tc_execute_result_$DATE.html
+JOURNAL_RESULT=$RESULT_DIR/drm_tc_execute_result_$DATE.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -e -j $JOURNAL_RESULT -p ./
+
+# Log Levels
+# LOG_LEVEL=3 prints only tet_infoline
+# LOG_LEVEL=7 prints only tet_infoline & tet_printf
+LOG_LEVEL=7
+grw -c $LOG_LEVEL -f chtml -o $HTML_RESULT $JOURNAL_RESULT
+
+# Copy the results outside drm-client
+echo "Copy the results outside drm-client & in folder drm_tc_results_client"
+mkdir -p ../../drm_tc_results_client
+cp $RESULT_DIR/drm_tc_execute_result_$DATE.html ../../drm_tc_results_client/
--- /dev/null
+# TET reserved codes
+0 "PASS"
+1 "FAIL"
+2 "UNRESOLVED"
+3 "NOTINUSE"
+4 "UNSUPPORTED"
+5 "UNTESTED"
+6 "UNINITIATED"
+7 "NORESULT"
+
+# Test suite additional codes
+33 "INSPECT"
--- /dev/null
+all
+ ^TEST
+##### Scenarios for TEST #####
+
+# Test scenario
+TEST
+ :include:/unit/tslist
--- /dev/null
+TET_OUTPUT_CAPTURE=False
+TET_BUILD_TOOL=make
+TET_PASS_TC_NAME=True
--- /dev/null
+TET_OUTPUT_CAPTURE=False
+TET_CLEAN_TOOL=make clean
--- /dev/null
+TET_OUTPUT_CAPTURE=False
--- /dev/null
+CC ?= gcc
+
+TARGETS = utc_drmclient_drm_is_drm_file_func \
+ utc_drmclient_drm_process_request_func \
+ utc_drmclient_drm_get_file_type_func \
+ utc_drmclient_drm_get_license_status_func \
+ utc_drmclient_drm_get_content_info_func \
+ utc_drmclient_drm_get_file_info_func \
+ utc_drmclient_drm_get_constraint_info_func \
+ utc_drmclient_drm_is_action_allowed_func \
+ utc_drmclient_drm_get_data_func
+
+PKGS = drm-client
+
+LDFLAGS = `pkg-config --libs $(PKGS)`
+LDFLAGS += $(TET_ROOT)/lib/tet3/tcm_s.o
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -ltcm_s
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -lapi_s
+
+CFLAGS = -I. `pkg-config --cflags $(PKGS)`
+CFLAGS += -I$(TET_ROOT)/inc/tet3
+CFLAGS += -Wall
+
+all: $(TARGETS)
+
+$(TARGETS): %: %.c
+ $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
+
+clean:
+ rm -rf $(TARGETS) ../results ../tet_tmp_dir
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file drmcontentsdef.h\r
+ * @brief DRM TC Content MACROs.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: DRM TC Content MACROs\r
+ */\r
+\r
+#ifndef __DRM_CONTENTS_DEF_H__\r
+#define __DRM_CONTENTS_DEF_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /*__cplusplus */\r
+\r
+#include "drm_client.h"\r
+\r
+#define FILE_PATH_MAX_SIZE (256)\r
+/* Modify path to local tc_data on target */\r
+#define DRM_CONTENT_PATH "/path/to/tc_data"\r
+\r
+/*\r
+ * Valid File paths\r
+ */\r
+#define FILE_PATH_VALID_FILE_OMA_1 DRM_CONTENT_PATH"/flourish_count5.dcf"\r
+#define FILE_PATH_VALID_FILE_OMA_2 DRM_CONTENT_PATH"/download.jpg.dm-849344490.odf"\r
+#define FILE_PATH_VALID_FILE_OMA_3 DRM_CONTENT_PATH"/4931_D2_AacpMetaDummy.o4a"\r
+#define FILE_PATH_VALID_FILE_OMA_4 DRM_CONTENT_PATH"/4941_D2_VideoH264AACDummy.o4v"\r
+#define FILE_PATH_VALID_FILE_OMA_5 DRM_CONTENT_PATH"/barimage_interval.dcf"\r
+#define FILE_PATH_VALID_FILE_OMA_6 DRM_CONTENT_PATH"/MonkeyMadness_startend_time.dcf"\r
+#define FILE_PATH_VALID_FILE_OMA_7 DRM_CONTENT_PATH"/pbarimage_timedcount.dcf"\r
+#define FILE_PATH_VALID_FILE_OMA_8 DRM_CONTENT_PATH"/cupcake_play.dcf"\r
+\r
+/*\r
+ * This file will be generated as a part of DM to DCF conversion test-case\r
+ */\r
+#define FILE_PATH_VALID_FILE_OMA_9 DRM_CONTENT_PATH"/image_cd.dcf"\r
+\r
+#define FILE_PATH_VALID_FILE_OMA_10 DRM_CONTENT_PATH"/3001_D1_Aac.dcf"\r
+\r
+#define FILE_PATH_VALID_FILE_OMA_11 DRM_CONTENT_PATH"/temp/flourish_count5.dcf"\r
+\r
+/*\r
+ * This file will be generated as a part of DM to DCF conversion test-case\r
+ */\r
+#define FILE_PATH_VALID_FILE_OMA_12 DRM_CONTENT_PATH"/1202_F1_Jpg.dcf"\r
+\r
+\r
+#define FILE_PATH_VALID_FILE_PR_1 DRM_CONTENT_PATH"/Jazz_Audio_OPLs0.pya"\r
+#define FILE_PATH_VALID_FILE_PR_2 DRM_CONTENT_PATH"/MD_h264_V4AES.pyv"\r
+#define FILE_PATH_VALID_FILE_PR_3 DRM_CONTENT_PATH"/ExpirationAudio1.pya"\r
+\r
+#define FILE_PATH_VALID_FILE_PR_ENV_1 DRM_CONTENT_PATH"/krishna.eny"\r
+#define FILE_PATH_VALID_FILE_PR_ENV_2 DRM_CONTENT_PATH"/jazz_audio_opls0.pye"\r
+\r
+\r
+#define FILE_PATH_VALID_FILE_DIVX_1 DRM_CONTENT_PATH"/V19_HD720p10_ICT_00.avi"\r
+\r
+/*\r
+ * Invalid File paths\r
+ */\r
+#define INVALID_POINTER_OBJECT NULL\r
+#define FILE_PATH_INVALID_FILE_NULL NULL\r
+#define FILE_PATH_INVALID_FILE_EMPTY ""\r
+\r
+#define FILE_PATH_INVALID_FILE_OMA_1 DRM_CONTENT_PATH"/flourish_count5.dr"\r
+#define FILE_PATH_INVALID_FILE_OMA_2 DRM_CONTENT_PATH"/Flower1.jpg"\r
+#define FILE_PATH_INVALID_FILE_OMA_3 DRM_CONTENT_PATH"/image_cd.dm"\r
+\r
+#define FILE_PATH_INVALID_FILE_PR_1 DRM_CONTENT_PATH"/clr_jazz_AAC.asf"\r
+#define FILE_PATH_INVALID_FILE_PR_2 DRM_CONTENT_PATH"/jazz.wma"\r
+\r
+#define FILE_PATH_INVALID_FILE_PR_ENV_1 DRM_CONTENT_PATH"/krishna.jpg"\r
+\r
+#define FILE_PATH_INVALID_FILE_DIVX_1 DRM_CONTENT_PATH"/sine_wave.avi"\r
+\r
+/** Valid RO file paths\r
+ *\r
+ */\r
+#define FILE_PATH_VALID_RO_FILE_OMA_1 DRM_CONTENT_PATH"/flourish_count5.dr"\r
+#define FILE_PATH_VALID_RO_FILE_OMA_2 DRM_CONTENT_PATH"/3001_D1_Aac_3Counts.drc"\r
+\r
+/** Invalid RO file paths\r
+ *\r
+ */\r
+#define FILE_PATH_INVALID_RO_FILE_OMA_1 DRM_CONTENT_PATH"/flourish_count5.dcf"\r
+\r
+/*\r
+ * Valid License Initiators\r
+ */\r
+/* Jazz_Audio_OPLs0.pya */\r
+#define LICENSE_INITIATOR_VALID_PR_FILE "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=ZVXWl75xFUOdCY/tO8bLCA==&type=license&content=http://131.107.149.211/pr/media/1044/Jazz_Audio_OPLs0.pya"\r
+\r
+/* DomainTestVideo1.pyv */\r
+#define LICENSE_INITIATOR_VALID_PR_FILE_1 "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=ybubwBx/XUidiUX3zdMRTg==&type=license&content=http://131.107.149.211/pr/media/1044/DomainTestVideo1.pyv"\r
+\r
+/* DomainTestVideo1.pyv */\r
+#define JOIN_DOMAIN_INITIATOR_VALID_PR_FILE_1 "http://playready.directtaps.net/pr/initiator.aspx?p=0&type=JOIN"\r
+\r
+/* DomainTestVideo1.pyv */\r
+#define LEAVE_DOMAIN_INITIATOR_VALID_PR_FILE_1 "http://playready.directtaps.net/pr/initiator.aspx?p=0&type=LEAVE"\r
+\r
+/* DomainTestVideo1.pyv */\r
+#define METERING_INITIATOR_VALID_PR_FILE_1 "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=ybubwBx/XUidiUX3zdMRTg==&type=metering&content=http://131.107.149.211/pr/media/1044/DomainTestVideo1.pyv"\r
+\r
+/* ExpirationAudio1.pya */\r
+#define LICENSE_INITIATOR_VALID_PR_FILE_2 "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=qTNJyCKLmUCdGpx1ZHQ0Aw==&type=license&content=http://131.107.149.211/pr/media/1044/ExpirationAudio1.pya"\r
+\r
+/* MD_h264_V4AES.pyv */\r
+#define LICENSE_INITIATOR_VALID_PR_FILE_3 "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=ewIUg21KrEecS3qu8m9EMQ==&type=license&content=http://131.107.149.211/pr/media/1044/MD_h264_V4AES.pyv"\r
+\r
+/* jazz_wma_Domain_No_Copy.pya */\r
+#define LICENSE_INITIATOR_VALID_PR_FILE_4 "http://playready.directtaps.net/pr/initiator.aspx?p=1&contentid=fXZukDZR4kKMOIbSE+MuPg==&type=license&content=http://131.107.149.211/pr/media/1207/jazz_wma_Domain_No_Copy.pya"\r
+\r
+/*\r
+ * Invalid License Initiators\r
+ */\r
+#define INVALID_LICENSE_INITIATOR_PR_FILE_1 "http://playready.directtaps.net/prxx/initiatorxxxx.aspx?p=0&contentid=ZVXWl75xFUOdCY/tO8bLCA==&type=license&content=http://131.107.149.211/pr/media/1044/Jazz_Audio_OPLs0.pya"\r
+#define INVALID_JOIN_DOMAIN_INITIATOR_1 "http://playready.directtaps.net/prxx/initiatorxxxx.aspx?p=0&type=JOIN"\r
+#define INVALID_LEAVE_DOMAIN_INITIATOR_1 "http://playready.directtaps.net/prxx/initiatorxxxx.aspx?p=0&type=LEAVE"\r
+#define INVALID_METERING_INITIATOR_1 "http://playready.directtaps.net/prxx/initiatorxxxx.aspx?p=0&contentid=ybubwBx/XUidiUX3zdMRTg==&type=metering&content=http://131.107.149.211/pr/media/1044/DomainTestVideo1.pyv"\r
+#define INVALID_LICENSE_INITIATOR_PR_FILE_2 "http://playready.directtaps.net/pr/initiator.aspx?p=0&contentid=ZVXWl75xFUOdCY/tO8bLCA==&type=license&content=http://131.107.149.211/prxx/media/1044/Jazz_Audio_OPLs0xxxx.pya"\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* __DRM_CONTENTS_DEF_H__ */\r
--- /dev/null
+#!/bin/sh
+
+TMPSTR=$0
+SCRIPT=${TMPSTR##*/}
+
+if [ $# -lt 2 ]; then
+ echo "Usage) $SCRIPT module_name api_name"
+ exit 1
+fi
+
+MODULE=$1
+API=$2
+TEMPLATE=utc_MODULE_API_func.c.in
+TESTCASE=utc_${MODULE}_${API}_func
+
+sed -e '
+ s^@API@^'"$API"'^g
+ s^@MODULE@^'"$MODULE"'^g
+ ' $TEMPLATE > $TESTCASE.c
+
+if [ ! -e "$TESTCASE.c" ]; then
+ echo "Failed"
+ exit 1
+fi
+echo "Testcase file is $TESTCASE.c"
+echo "Done"
+echo "please put \"$TESTCASE\" as Target in Makefile"
+echo "please put \"/unit/$TESTCASE\" in tslist"
--- /dev/null
+/unit/utc_drmclient_drm_is_drm_file_func
+/unit/utc_drmclient_drm_process_request_func
+/unit/utc_drmclient_drm_get_file_type_func
+/unit/utc_drmclient_drm_get_license_status_func
+/unit/utc_drmclient_drm_get_content_info_func
+/unit/utc_drmclient_drm_get_file_info_func
+/unit/utc_drmclient_drm_get_constraint_info_func
+/unit/utc_drmclient_drm_is_action_allowed_func
+/unit/utc_drmclient_drm_get_data_func
--- /dev/null
+#include <tet_api.h>
+#include "pkgname.h"
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_@MODULE@_@API@_func_01(void);
+static void utc_@MODULE@_@API@_func_02(void);
+
+enum {
+ POSITIVE_TC_IDX = 0x01,
+ NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+ { utc_@MODULE@_@API@_func_01, POSITIVE_TC_IDX },
+ { utc_@MODULE@_@API@_func_02, NEGATIVE_TC_IDX },
+};
+
+static int pid;
+
+static void startup(void)
+{
+}
+
+static void cleanup(void)
+{
+}
+
+/**
+ * @brief Positive test case of @API@()
+ */
+static void utc_@MODULE@_@API@_func_01(void)
+{
+ int r = 0;
+ char buf[MAX_LOCAL_BUFSZ];
+
+ r = @API@(...);
+
+ if (r<0) {
+ tet_infoline("@API@() failed in positive test case");
+ tet_result(TET_FAIL);
+ return;
+ }
+ tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init @API@()
+ */
+static void utc_@MODULE@_@API@_func_02(void)
+{
+ int r = 0;
+ char buf[MAX_LOCAL_BUFSZ];
+
+ r = @API@(...);
+
+ if (r>=0) {
+ tet_infoline("@API@() failed in negative test case");
+ tet_result(TET_FAIL);
+ return;
+ }
+ tet_result(TET_PASS);
+}
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_constraint_info_func.c\r
+ * @brief TETware unit testing functions for drm_get_constraint_info.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_constraint_info_func_01(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_02(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_03(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_04(void);\r
+/* Disabled below test-cases due to network & other dependencies */\r
+#if 0\r
+static void utc_drmclient_drm_get_constraint_info_func_05(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_06(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_07(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_08(void);\r
+#endif\r
+static void utc_drmclient_drm_get_constraint_info_func_09(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_10(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_11(void);\r
+static void utc_drmclient_drm_get_constraint_info_func_12(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_constraint_info_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_04, POSITIVE_TC_IDX },\r
+ /* Disabled below test-cases due to network & other dependencies */\r
+#if 0\r
+ { utc_drmclient_drm_get_constraint_info_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_08, POSITIVE_TC_IDX },\r
+#endif\r
+ { utc_drmclient_drm_get_constraint_info_func_09, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_10, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_11, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_constraint_info_func_12, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_constraint_info:Test started");\r
+ tet_infoline("OMA DRM Content should be registered");\r
+ tet_infoline("RO must be installed to get valid constraint information");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_constraint_info:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_DISPLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_5);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_5);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_5);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_EXECUTE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_6);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_6);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_6);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_8);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/* Disabled below test-cases due to network & other dependencies */\r
+#if 0\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_1);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_2);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_3);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_3);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_3);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_DIVX_1);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if(constraint_info.const_type.is_unlimited){\r
+ tet_printf("Unlimited:for permission=%d",perm_type);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ tet_printf("Accumulated Constraint is present");\r
+ tet_printf("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ tet_printf("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ tet_printf("Count Constraint is present");\r
+ tet_printf("original_count=%d",\r
+ constraint_info.original_count);\r
+ tet_printf("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ tet_printf("DATETIME Constraint is present");\r
+ tet_printf("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ tet_printf("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ tet_printf("INDIVIDUAL Constraint is present");\r
+ tet_printf("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ tet_printf("INTERVAL Constraint is present");\r
+ tet_printf("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ tet_printf("SYSTEM Constraint is present");\r
+ tet_printf("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ tet_printf("TIMED-COUNT Constraint is present");\r
+ tet_printf("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ tet_printf("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ tet_printf("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+#endif\r
+/**\r
+ * @brief Negative test case of drm_get_constraint_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_constraint_info_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+\r
+ ret = drm_get_constraint_info(FILE_PATH_INVALID_FILE_NULL,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_constraint_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_constraint_info_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_constraint_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_constraint_info_func_11(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_constraint_info()\r
+ */\r
+static void utc_drmclient_drm_get_constraint_info_func_12(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_DISPLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_7);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS != ret ){\r
+ /* pbarimage_timedcount.dr RO is in wrong format */\r
+ /* Thus it will fail */\r
+ tet_infoline("drm_get_constraint_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_7);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_constraint_info");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_7);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_content_info_func.c\r
+ * @brief TETware unit testing functions for drm_get_content_info.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_content_info_func_01(void);\r
+static void utc_drmclient_drm_get_content_info_func_02(void);\r
+static void utc_drmclient_drm_get_content_info_func_03(void);\r
+static void utc_drmclient_drm_get_content_info_func_04(void);\r
+static void utc_drmclient_drm_get_content_info_func_05(void);\r
+static void utc_drmclient_drm_get_content_info_func_06(void);\r
+static void utc_drmclient_drm_get_content_info_func_07(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_content_info_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_05, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_06, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_content_info_func_07, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_content_info:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_content_info:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+ if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+ if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+ if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+ if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+ if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+ if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+ if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+ if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+ if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+ if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+ if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+ if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+ if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+ if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+ if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+ if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+ if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+ if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+ if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+ if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+ if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+ if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+ if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+ if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+ if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+ if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+ if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_content_info()\r
+ */\r
+static void utc_drmclient_drm_get_content_info_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ if('\0' != content_info.author[0]) tet_printf("author=%s",content_info.author);\r
+ if('\0' != content_info.copyright[0]) tet_printf("copyright=%s",content_info.copyright);\r
+ if('\0' != content_info.description[0]) tet_printf("description=%s",content_info.description);\r
+ if('\0' != content_info.icon_uri[0]) tet_printf("icon_uri=%s",content_info.icon_uri);\r
+ if('\0' != content_info.info_url[0]) tet_printf("info_url=%s",content_info.info_url);\r
+ if('\0' != content_info.content_url[0]) tet_printf("content_url=%s",content_info.content_url);\r
+ if('\0' != content_info.rights_url[0]) tet_printf("rights_url=%s",content_info.rights_url);\r
+ if('\0' != content_info.title[0]) tet_printf("title=%s",content_info.title);\r
+ if('\0' != content_info.mime_type[0]) tet_printf("mime_type=%s",content_info.mime_type);\r
+ if('\0' != content_info.content_id[0]) tet_printf("content_id=%s",content_info.content_id);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+\r
+ ret = drm_get_content_info(FILE_PATH_INVALID_FILE_NULL,&content_info);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_content_info_s content_info;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_content_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_content_info_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+\r
+ ret = drm_get_content_info(file_path,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_content_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_content_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret =%d",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_data_func.c\r
+ * @brief TETware unit testing functions for drm_get_data.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_data_func_01(void);\r
+static void utc_drmclient_drm_get_data_func_02(void);\r
+static void utc_drmclient_drm_get_data_func_03(void);\r
+static void utc_drmclient_drm_get_data_func_04(void);\r
+static void utc_drmclient_drm_get_data_func_05(void);\r
+static void utc_drmclient_drm_get_data_func_06(void);\r
+static void utc_drmclient_drm_get_data_func_07(void);\r
+static void utc_drmclient_drm_get_data_func_08(void);\r
+static void utc_drmclient_drm_get_data_func_09(void);\r
+static void utc_drmclient_drm_get_data_func_10(void);\r
+static void utc_drmclient_drm_get_data_func_11(void);\r
+static void utc_drmclient_drm_get_data_func_12(void);\r
+static void utc_drmclient_drm_get_data_func_13(void);\r
+static void utc_drmclient_drm_get_data_func_14(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_data_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_02, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_03, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_04, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_06, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_08, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_09, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_10, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_11, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_12, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_13, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_data_func_14, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_data:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_data:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_01(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_SECURE_CLOCK;\r
+ drm_secure_clock_data_s secure_clock_info={0};\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
+ ret = drm_get_data(data_type,NULL,(void*)&secure_clock_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret\r
+ && 1 == secure_clock_info.is_secure_clock_set){\r
+ tet_printf("Secure Clock is SET:ret=0x%x",ret);\r
+ tet_printf("Secure Time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ secure_clock_info.secure_clock.tm_year,\r
+ secure_clock_info.secure_clock.tm_mon,\r
+ secure_clock_info.secure_clock.tm_mday,\r
+ secure_clock_info.secure_clock.tm_hour,\r
+ secure_clock_info.secure_clock.tm_min,\r
+ secure_clock_info.secure_clock.tm_sec);\r
+ tet_result(TET_PASS);\r
+ }else if(DRM_RETURN_SUCCESS == ret\r
+ && 0 == secure_clock_info.is_secure_clock_set){\r
+ tet_printf("Secure Clock is NOT SET:ret=0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Secure Clock Retrieval FAILED:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_02(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_NONE;\r
+ drm_secure_clock_data_s secure_clock_info={0};\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
+ ret = drm_get_data(data_type,NULL,(void*)&secure_clock_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret\r
+ && 1 == secure_clock_info.is_secure_clock_set){\r
+ tet_printf("Secure Clock is SET:ret=0x%x",ret);\r
+ tet_printf("Secure Time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ secure_clock_info.secure_clock.tm_year,\r
+ secure_clock_info.secure_clock.tm_mon,\r
+ secure_clock_info.secure_clock.tm_mday,\r
+ secure_clock_info.secure_clock.tm_hour,\r
+ secure_clock_info.secure_clock.tm_min,\r
+ secure_clock_info.secure_clock.tm_sec);\r
+ tet_result(TET_FAIL);\r
+ }else if(DRM_RETURN_SUCCESS == ret\r
+ && 0 == secure_clock_info.is_secure_clock_set){\r
+ tet_printf("Secure Clock is NOT SET:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Passing Invalid data_type=%d",data_type);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_03(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_SECURE_CLOCK;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
+ ret = drm_get_data(data_type,NULL,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Returned Success:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Passing Invalid output parameter");\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_04(void)\r
+{\r
+ drm_data_type_e data_type=DRM_DATA_TYPE_NONE;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_SECURE_CLOCK");\r
+ ret = drm_get_data(data_type,NULL,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Returned Success:ret=0x%x data_type=%d",ret,data_type);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Passing Invalid data_type=%d",data_type);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_05(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ int transtrk_flag = 0;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG");\r
+ ret = drm_get_data(data_type, NULL, (void*)&transtrk_flag);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("transtrk_flag = %d", transtrk_flag);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("Get Transaction Tracking Flag failed!!, "\r
+ "ret = 0x%x", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_06(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf ("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG");\r
+ ret = drm_get_data(data_type, NULL,NULL);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Returned Success");\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("Invalid output:ret = 0x%x", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_07(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
+ drm_transaction_id_info_s transaction_id_info;\r
+ memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
+\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_data(data_type,(void*)file_path,(void*)&transaction_id_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Transaction ID Length =%d file_path=%s",\r
+ transaction_id_info.tr_id_len,file_path);\r
+ if(0 != transaction_id_info.tr_id_len){\r
+ tet_printf("Transaction ID =%s",\r
+ transaction_id_info.tr_id);\r
+ }\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Transaction ID Retrieval FAILED:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_08(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
+ drm_transaction_id_info_s transaction_id_info;\r
+ memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
+\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_EMPTY);\r
+\r
+ ret = drm_get_data(data_type,(void*)file_path,(void*)&transaction_id_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Transaction ID Length =%d file_path=%s",\r
+ transaction_id_info.tr_id_len,file_path);\r
+ if(0 != transaction_id_info.tr_id_len){\r
+ tet_printf("Transaction ID =%s",\r
+ transaction_id_info.tr_id);\r
+ }\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid Input:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_09(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
+\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_data(data_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Returned Success:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid Output:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_10(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
+ drm_transaction_id_info_s transaction_id_info;\r
+ memset(&transaction_id_info,0x0,sizeof(drm_transaction_id_info_s));\r
+\r
+ ret = drm_get_data(data_type,NULL,(void*)&transaction_id_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Returned Success:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid Input:ret=0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_11(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_DIVX_REGISTRATION_CODE");\r
+\r
+ drm_code_info_s reg_code_info;\r
+ memset(®_code_info,0x0,sizeof(drm_code_info_s));\r
+\r
+ ret = drm_get_data(data_type, NULL, (void*) ®_code_info);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Code Length = %d", reg_code_info.code_len);\r
+ if (0 != reg_code_info.code_len) {\r
+ tet_printf("Code = %s", reg_code_info.code);\r
+ }\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("Divx Registration Code Retrieval failed!!");\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_12(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_DIVX_REGISTRATION_CODE");\r
+\r
+ ret = drm_get_data(data_type, NULL,NULL);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Success:ret=0x%x", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("Invalid output:ret=0x%x", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_13(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE");\r
+\r
+ drm_code_info_s dereg_code_info;\r
+ memset(&dereg_code_info,0x0,sizeof(drm_code_info_s));\r
+ ret = drm_get_data(data_type, NULL, (void*) &dereg_code_info);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Code Length = %d", dereg_code_info.code_len);\r
+ if (0 != dereg_code_info.code_len) {\r
+ tet_printf("Code = %s", dereg_code_info.code);\r
+ }\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("Divx Deregistration Code Retrieval failed!!");\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_data()\r
+ */\r
+static void utc_drmclient_drm_get_data_func_14(void)\r
+{\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE;\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+\r
+ tet_printf("Testing:DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE");\r
+\r
+ ret = drm_get_data(data_type, NULL,NULL);\r
+ tet_printf("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Success:ret=0x%x", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("Invalid output:ret=0x%x", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_file_info_func.c\r
+ * @brief TETware unit testing functions for drm_get_file_info.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_file_info_func_01(void);\r
+static void utc_drmclient_drm_get_file_info_func_02(void);\r
+static void utc_drmclient_drm_get_file_info_func_03(void);\r
+static void utc_drmclient_drm_get_file_info_func_04(void);\r
+static void utc_drmclient_drm_get_file_info_func_05(void);\r
+static void utc_drmclient_drm_get_file_info_func_06(void);\r
+static void utc_drmclient_drm_get_file_info_func_07(void);\r
+static void utc_drmclient_drm_get_file_info_func_08(void);\r
+static void utc_drmclient_drm_get_file_info_func_09(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_file_info_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_07, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_08, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_info_func_09, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_file_info:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_file_info:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_info()\r
+ */\r
+static void utc_drmclient_drm_get_file_info_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ tet_printf("method=%d",fileInfo.oma_info.method);\r
+ tet_printf("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ tet_printf("PlayReady Envelope File");\r
+ tet_printf("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ tet_printf("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ tet_printf("Other DRM File=%s",file_path);\r
+ }\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path=%s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_info_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+\r
+ ret = drm_get_file_info(FILE_PATH_INVALID_FILE_NULL,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_info_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_info_s fileInfo;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_EMPTY);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_info()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_info_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_get_file_info(file_path,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_info PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_info FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_file_type_func.c\r
+ * @brief TETware unit testing functions for drm_get_file_type.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_file_type_func_01(void);\r
+static void utc_drmclient_drm_get_file_type_func_02(void);\r
+static void utc_drmclient_drm_get_file_type_func_03(void);\r
+static void utc_drmclient_drm_get_file_type_func_04(void);\r
+static void utc_drmclient_drm_get_file_type_func_05(void);\r
+static void utc_drmclient_drm_get_file_type_func_06(void);\r
+static void utc_drmclient_drm_get_file_type_func_07(void);\r
+static void utc_drmclient_drm_get_file_type_func_08(void);\r
+static void utc_drmclient_drm_get_file_type_func_09(void);\r
+static void utc_drmclient_drm_get_file_type_func_10(void);\r
+static void utc_drmclient_drm_get_file_type_func_11(void);\r
+static void utc_drmclient_drm_get_file_type_func_12(void);\r
+static void utc_drmclient_drm_get_file_type_func_13(void);\r
+static void utc_drmclient_drm_get_file_type_func_14(void);\r
+static void utc_drmclient_drm_get_file_type_func_15(void);\r
+static void utc_drmclient_drm_get_file_type_func_16(void);\r
+static void utc_drmclient_drm_get_file_type_func_17(void);\r
+static void utc_drmclient_drm_get_file_type_func_18(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_file_type_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_08, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_09, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_10, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_11, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_12, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_13, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_14, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_15, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_16, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_17, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_file_type_func_18, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_file_type:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_file_type:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_OMA_V1 == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_OMA_V2 == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_OMA_V2 == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_OMA_V2 == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_PLAYREADY == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_2);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_PLAYREADY == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_PLAYREADY_ENVELOPE == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_PLAYREADY_ENVELOPE == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_file_type()\r
+ */\r
+static void utc_drmclient_drm_get_file_type_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_DIVX_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_DIVX == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+\r
+ ret = drm_get_file_type(FILE_PATH_INVALID_FILE_NULL,&file_type);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_11(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_12(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_13(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_14(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_15(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_16(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_2);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_17(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TYPE_UNDEFINED == file_type){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_file_type()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_file_type_func_18(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_get_file_type(file_path,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_file_type PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_file_type FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x file_type=%d",ret,file_type);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_get_license_status_func.c\r
+ * @brief TETware unit testing functions for drm_get_license_status.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_get_license_status_func_01(void);\r
+static void utc_drmclient_drm_get_license_status_func_02(void);\r
+static void utc_drmclient_drm_get_license_status_func_03(void);\r
+static void utc_drmclient_drm_get_license_status_func_04(void);\r
+static void utc_drmclient_drm_get_license_status_func_05(void);\r
+static void utc_drmclient_drm_get_license_status_func_06(void);\r
+static void utc_drmclient_drm_get_license_status_func_07(void);\r
+static void utc_drmclient_drm_get_license_status_func_08(void);\r
+static void utc_drmclient_drm_get_license_status_func_09(void);\r
+static void utc_drmclient_drm_get_license_status_func_10(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_get_license_status_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_07, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_08, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_09, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_get_license_status_func_10, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_get_license_status:Test started");\r
+ tet_infoline("OMA DRM Content should be registered");\r
+ tet_infoline("RO must be installed to get valid License status");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_get_license_status:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_DISPLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_1);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_get_license_status()\r
+ */\r
+static void utc_drmclient_drm_get_license_status_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_PLAY;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_2);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret ){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_license_status()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_license_status_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_NONE;\r
+\r
+ ret = drm_get_license_status(FILE_PATH_INVALID_FILE_NULL,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_license_status()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_license_status_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_NONE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_license_status()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_license_status_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_NONE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_get_license_status()\r
+ */\r
+\r
+static void utc_drmclient_drm_get_license_status_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ drm_permission_type_e perm_type = DRM_PERMISSION_TYPE_NONE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_2);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_get_license_status PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_get_license_status FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x license_status=%d",ret,license_status);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_is_action_allowed_func.c\r
+ * @brief TETware unit testing functions for drm_is_action_allowed.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_is_action_allowed_func_01(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_02(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_03(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_04(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_05(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_06(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_07(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_08(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_09(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_10(void);\r
+static void utc_drmclient_drm_is_action_allowed_func_11(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_is_action_allowed_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_08, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_09, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_10, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_action_allowed_func_11, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_is_action_allowed:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_is_action_allowed:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_9);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_9);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_9);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_HAS_VALID_SETAS_STATUS;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ action_data.data = (int)DRM_SETAS_RINGTONE;\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_allowed){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_HAS_VALID_SETAS_STATUS;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_8);\r
+ action_data.data= (int)DRM_SETAS_RINGTONE;\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_8);\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_DEVICE_ACTIVATED;\r
+\r
+ ret = drm_is_action_allowed(action,NULL,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_VALID_SECURE_CLOCK;\r
+\r
+ ret = drm_is_action_allowed(action,NULL,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_action_allowed()\r
+ */\r
+static void utc_drmclient_drm_is_action_allowed_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+\r
+ ret = drm_is_action_allowed(action,NULL,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("ret = 0x%x is_allowed=%d",ret,is_allowed);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_action_allowed()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_action_allowed_func_11(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_action_type_e action = DRM_IS_FORWARDING_ALLOWED;\r
+ drm_action_allowed_data_s action_data;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+ snprintf(action_data.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_is_action_allowed PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_action_allowed FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_is_drm_file_func.c\r
+ * @brief TETware unit testing functions for drm_is_drm_file.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <tet_api.h>\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_01(void);\r
+static void utc_drmclient_drm_is_drm_file_func_02(void);\r
+static void utc_drmclient_drm_is_drm_file_func_03(void);\r
+static void utc_drmclient_drm_is_drm_file_func_04(void);\r
+static void utc_drmclient_drm_is_drm_file_func_05(void);\r
+static void utc_drmclient_drm_is_drm_file_func_06(void);\r
+static void utc_drmclient_drm_is_drm_file_func_07(void);\r
+static void utc_drmclient_drm_is_drm_file_func_08(void);\r
+static void utc_drmclient_drm_is_drm_file_func_09(void);\r
+static void utc_drmclient_drm_is_drm_file_func_10(void);\r
+static void utc_drmclient_drm_is_drm_file_func_11(void);\r
+static void utc_drmclient_drm_is_drm_file_func_12(void);\r
+static void utc_drmclient_drm_is_drm_file_func_13(void);\r
+static void utc_drmclient_drm_is_drm_file_func_14(void);\r
+static void utc_drmclient_drm_is_drm_file_func_15(void);\r
+static void utc_drmclient_drm_is_drm_file_func_16(void);\r
+static void utc_drmclient_drm_is_drm_file_func_17(void);\r
+static void utc_drmclient_drm_is_drm_file_func_18(void);\r
+static void utc_drmclient_drm_is_drm_file_func_19(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_is_drm_file_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_03, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_04, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_05, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_08, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_09, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_10, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_11, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_12, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_13, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_14, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_15, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_16, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_17, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_18, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_is_drm_file_func_19, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_is_drm_file:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_is_drm_file:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_02(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_2);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_3);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_4);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_OMA_4);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_2);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_07(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_PR_ENV_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_is_drm_file()\r
+ */\r
+static void utc_drmclient_drm_is_drm_file_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_DIVX_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_VALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+\r
+ ret = drm_is_drm_file(FILE_PATH_INVALID_FILE_NULL,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_NULL);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_11(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_12(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_13(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_2);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_14(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_OMA_3);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_OMA_3);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_15(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_16(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_2);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_2);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_17(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_PR_ENV_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_18(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_FALSE == is_drm_file){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_is_drm_file()\r
+ */\r
+\r
+static void utc_drmclient_drm_is_drm_file_func_19(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR ;\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+\r
+ ret = drm_is_drm_file(file_path,INVALID_POINTER_OBJECT);\r
+ if(DRM_RETURN_SUCCESS != ret){\r
+ tet_infoline("drm_is_drm_file PASS!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_infoline("drm_is_drm_file FAIL!!!");\r
+ tet_printf ("file_path checked is %s",FILE_PATH_INVALID_FILE_DIVX_1);\r
+ tet_printf ("ret = 0x%x is_drm_file=%d",ret,is_drm_file);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client TCs\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file utc_drmclient_drm_process_request_func.c\r
+ * @brief TETware unit testing functions for drm_process_request.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: Initial draft\r
+ */\r
+\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+\r
+#include <tet_api.h>\r
+\r
+#include "drmcontentsdef.h"\r
+\r
+static void startup(void);\r
+static void cleanup(void);\r
+\r
+void (*tet_startup)(void) = startup;\r
+void (*tet_cleanup)(void) = cleanup;\r
+\r
+static void utc_drmclient_drm_process_request_func_01(void);\r
+static void utc_drmclient_drm_process_request_func_02(void);\r
+static void utc_drmclient_drm_process_request_func_03(void);\r
+static void utc_drmclient_drm_process_request_func_04(void);\r
+static void utc_drmclient_drm_process_request_func_05(void);\r
+static void utc_drmclient_drm_process_request_func_06(void);\r
+static void utc_drmclient_drm_process_request_func_07(void);\r
+static void utc_drmclient_drm_process_request_func_08(void);\r
+static void utc_drmclient_drm_process_request_func_09(void);\r
+static void utc_drmclient_drm_process_request_func_10(void);\r
+static void utc_drmclient_drm_process_request_func_11(void);\r
+static void utc_drmclient_drm_process_request_func_12(void);\r
+static void utc_drmclient_drm_process_request_func_13(void);\r
+static void utc_drmclient_drm_process_request_func_14(void);\r
+static void utc_drmclient_drm_process_request_func_15(void);\r
+static void utc_drmclient_drm_process_request_func_16(void);\r
+static void utc_drmclient_drm_process_request_func_17(void);\r
+static void utc_drmclient_drm_process_request_func_18(void);\r
+static void utc_drmclient_drm_process_request_func_19(void);\r
+static void utc_drmclient_drm_process_request_func_20(void);\r
+static void utc_drmclient_drm_process_request_func_21(void);\r
+static void utc_drmclient_drm_process_request_func_22(void);\r
+static void utc_drmclient_drm_process_request_func_23(void);\r
+static void utc_drmclient_drm_process_request_func_24(void);\r
+static void utc_drmclient_drm_process_request_func_25(void);\r
+static void utc_drmclient_drm_process_request_func_26(void);\r
+static void utc_drmclient_drm_process_request_func_27(void);\r
+static void utc_drmclient_drm_process_request_func_28(void);\r
+static void utc_drmclient_drm_process_request_func_29(void);\r
+static void utc_drmclient_drm_process_request_func_30(void);\r
+static void utc_drmclient_drm_process_request_func_31(void);\r
+static void utc_drmclient_drm_process_request_func_32(void);\r
+static void utc_drmclient_drm_process_request_func_33(void);\r
+static void utc_drmclient_drm_process_request_func_34(void);\r
+static void utc_drmclient_drm_process_request_func_35(void);\r
+static void utc_drmclient_drm_process_request_func_36(void);\r
+static void utc_drmclient_drm_process_request_func_37(void);\r
+static void utc_drmclient_drm_process_request_func_38(void);\r
+static void utc_drmclient_drm_process_request_func_39(void);\r
+\r
+enum {\r
+ POSITIVE_TC_IDX = 0x01,\r
+ NEGATIVE_TC_IDX,\r
+};\r
+\r
+struct tet_testlist tet_testlist[] = {\r
+ { utc_drmclient_drm_process_request_func_01, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_02, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_03, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_04, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_05, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_06, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_07, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_08, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_09, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_10, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_11, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_12, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_13, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_14, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_15, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_16, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_17, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_18, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_19, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_20, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_21, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_22, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_23, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_24, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_25, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_26, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_27, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_28, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_29, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_30, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_31, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_32, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_33, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_34, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_35, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_36, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_37, NEGATIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_38, POSITIVE_TC_IDX },\r
+ { utc_drmclient_drm_process_request_func_39, NEGATIVE_TC_IDX },\r
+ { NULL, 0 }\r
+};\r
+\r
+static void startup(void)\r
+{\r
+ tet_infoline("drm_process_request:Test started");\r
+}\r
+\r
+static void cleanup(void)\r
+{\r
+ tet_infoline("drm_process_request:Test completed");\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_01(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_FILE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_REGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%s",\r
+ file_path);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Register FAILED:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_02(void)\r
+{\r
+ /** This is duplication of\r
+ * test-case utc_drmclient_drm_process_request_func_01\r
+ * This test-case is added to ensure proper behavior if same content is\r
+ * registered 2 times.\r
+ */\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_FILE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_REGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%s",\r
+ file_path);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Register FAILED:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_03(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_NONE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_NONE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%s",\r
+ file_path);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid request_type=%d ret=0x%x file_path=%s",\r
+ request_type,ret,file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_04(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_FILE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%s",\r
+ file_path);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid file_path: ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_05(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_FILE;\r
+ char *file_path = NULL;\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%p",\r
+ file_path);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid file_path: ret=0x%x file_path=%p",\r
+ ret,file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_06(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE;\r
+ drm_unregister_info_s unregister_info;\r
+ memset(&unregister_info,0x0,sizeof(drm_unregister_info_s));\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_FILE");\r
+ snprintf(unregister_info.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ unregister_info.remove_license = 1;\r
+\r
+ ret = drm_process_request(request_type,(void*)&unregister_info,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Un-register success:file_path=%s",\r
+ unregister_info.file_path);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Un-register FAILED:ret=0x%x "\r
+ "file_path=%s",ret,unregister_info.file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_07(void)\r
+{\r
+ /** This is duplication of\r
+ * test-case utc_drmclient_drm_process_request_func_06\r
+ * This test-case is added to ensure proper behavior if same content is\r
+ * unregistered 2 times.\r
+ */\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE;\r
+ drm_unregister_info_s unregister_info;\r
+ memset(&unregister_info,0x0,sizeof(drm_unregister_info_s));\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_FILE");\r
+ snprintf(unregister_info.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ unregister_info.remove_license = 0;\r
+\r
+ ret = drm_process_request(request_type,(void*)&unregister_info,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Un-register success:file_path=%s",\r
+ unregister_info.file_path);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Un-register FAILED:ret=0x%x "\r
+ "file_path=%s",ret,unregister_info.file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_08(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE;\r
+ drm_unregister_info_s unregister_info;\r
+ memset(&unregister_info,0x0,sizeof(drm_unregister_info_s));\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_FILE");\r
+ snprintf(unregister_info.file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_INVALID_FILE_EMPTY);\r
+ unregister_info.remove_license = 0;\r
+\r
+ ret = drm_process_request(request_type,(void*)&unregister_info,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Un-register success:file_path=%s",\r
+ unregister_info.file_path);\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid file path:ret=0x%x "\r
+ "file_path=%s",ret,unregister_info.file_path);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_09(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE;\r
+\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Un-register success");\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid input:ret=0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_10(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_LICENSE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_LICENSE");\r
+\r
+ drm_register_lic_info_s lic_req_info;\r
+ drm_register_lic_resp_s lic_resp_info;\r
+\r
+ memset(&lic_req_info,0x0,sizeof(drm_register_lic_info_s));\r
+ memset(&lic_resp_info,0x0,sizeof(drm_register_lic_resp_s));\r
+\r
+ struct stat stat_buf = { 0 };\r
+ FILE *fp = NULL;\r
+ unsigned int read_len=0;\r
+ char *tempPath = NULL;\r
+\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_RO_FILE_OMA_1);\r
+\r
+ if (0 == stat(file_path, &stat_buf)) {\r
+ lic_req_info.lic_data_len = stat_buf.st_size;\r
+ tet_printf("file_path=%s file_size=%u",file_path,\r
+ lic_req_info.lic_data_len);\r
+ } else {\r
+ tet_printf("stat failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ tet_result(TET_FAIL);\r
+ return;\r
+ }\r
+\r
+ fp = fopen(file_path,"r");\r
+ if(NULL == fp){\r
+ tet_printf("fopen failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ tet_result(TET_FAIL);\r
+ return;\r
+ }\r
+\r
+ memset(lic_req_info.lic_data,0x0,sizeof(lic_req_info.lic_data));\r
+ read_len = fread(lic_req_info.lic_data,1,lic_req_info.lic_data_len,fp);\r
+ tet_printf("read_len=%u lic_req_info.lic_data_len=%u",\r
+ read_len,lic_req_info.lic_data_len);\r
+\r
+ fclose(fp);\r
+\r
+ tempPath = strrchr((char *)file_path, '.');\r
+ if(strncmp(tempPath, ".dr", 2) == 0\r
+ || strncmp(tempPath, ".drc", 3) == 0){\r
+ tet_printf("DRM v1 License file");\r
+\r
+ lic_req_info.lic_version = DRM_OMA_DRMV1_RIGHTS;\r
+ lic_req_info.roap_init_src = DRM_ROAP_INIT_FROM_UNKNOWN;\r
+ lic_req_info.operation_callback.callback = NULL;\r
+\r
+ ret = drm_process_request(request_type,(void*)&lic_req_info,\r
+ (void*)&lic_resp_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register License success");\r
+ tet_printf("CID=%s",lic_resp_info.cid);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Register License FAILED:"\r
+ "ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+ }else{\r
+ tet_printf("Not a License file:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_11(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_LICENSE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_LICENSE");\r
+\r
+ drm_register_lic_info_s lic_req_info;\r
+ drm_register_lic_resp_s lic_resp_info;\r
+\r
+ memset(&lic_req_info,0x0,sizeof(drm_register_lic_info_s));\r
+ memset(&lic_resp_info,0x0,sizeof(drm_register_lic_resp_s));\r
+\r
+ struct stat stat_buf = { 0 };\r
+ FILE *fp = NULL;\r
+ unsigned int read_len=0;\r
+ char *tempPath = NULL;\r
+\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_RO_FILE_OMA_2);\r
+\r
+ if (0 == stat(file_path, &stat_buf)) {\r
+ lic_req_info.lic_data_len = stat_buf.st_size;\r
+ tet_printf("file_path=%s file_size=%u",file_path,\r
+ lic_req_info.lic_data_len);\r
+ } else {\r
+ tet_printf("stat failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ tet_result(TET_FAIL);\r
+ return;\r
+ }\r
+\r
+ fp = fopen(file_path,"r");\r
+ if(NULL == fp){\r
+ tet_printf("fopen failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ tet_result(TET_FAIL);\r
+ return;\r
+ }\r
+\r
+ memset(lic_req_info.lic_data,0x0,sizeof(lic_req_info.lic_data));\r
+ read_len = fread(lic_req_info.lic_data,1,lic_req_info.lic_data_len,fp);\r
+ tet_printf("read_len=%u lic_req_info.lic_data_len=%u",\r
+ read_len,lic_req_info.lic_data_len);\r
+\r
+ fclose(fp);\r
+\r
+ tempPath = strrchr((char *)file_path, '.');\r
+ if(strncmp(tempPath, ".dr", 2) == 0\r
+ || strncmp(tempPath, ".drc", 3) == 0){\r
+ tet_printf("DRM v1 License file");\r
+\r
+ lic_req_info.lic_version = DRM_OMA_DRMV1_RIGHTS;\r
+ lic_req_info.roap_init_src = DRM_ROAP_INIT_FROM_UNKNOWN;\r
+ lic_req_info.operation_callback.callback = NULL;\r
+\r
+ ret = drm_process_request(request_type,(void*)&lic_req_info,\r
+ (void*)&lic_resp_info);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register License success");\r
+ tet_printf("CID=%s",lic_resp_info.cid);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Register License FAILED:"\r
+ "ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+ }else{\r
+ tet_printf("Not a License file:ret=0x%x",ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_12(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_LICENSE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_LICENSE");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register License success");\r
+ tet_result(TET_FAIL);\r
+ }else{\r
+ tet_printf("Invalid input and output ret=0x%x",ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ * @remark Content is un-registered as a part of\r
+ * utc_drmclient_drm_process_request_func_06\r
+ * and utc_drmclient_drm_process_request_func_07.\r
+ * Thus re-registering the content.\r
+ */\r
+static void utc_drmclient_drm_process_request_func_13(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_FILE;\r
+ char file_path[FILE_PATH_MAX_SIZE] = {0,};\r
+\r
+ snprintf(file_path,FILE_PATH_MAX_SIZE, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_REGISTER_FILE");\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ tet_printf("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ tet_printf("Register success:file_path=%s",\r
+ file_path);\r
+ tet_result(TET_PASS);\r
+ }else{\r
+ tet_printf("Register FAILED:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_14(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ LICENSE_INITIATOR_VALID_PR_FILE);\r
+\r
+ tet_printf ("Source Initiator URL=%s",LICENSE_INITIATOR_VALID_PR_FILE);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(LICENSE_INITIATOR_VALID_PR_FILE));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_15(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ LICENSE_INITIATOR_VALID_PR_FILE_1);\r
+\r
+ tet_printf ("Source Initiator URL=%s",LICENSE_INITIATOR_VALID_PR_FILE_1);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(LICENSE_INITIATOR_VALID_PR_FILE_1));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_16(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ JOIN_DOMAIN_INITIATOR_VALID_PR_FILE_1);\r
+\r
+ tet_printf ("Source Initiator URL=%s",JOIN_DOMAIN_INITIATOR_VALID_PR_FILE_1);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(JOIN_DOMAIN_INITIATOR_VALID_PR_FILE_1));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_17(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ LEAVE_DOMAIN_INITIATOR_VALID_PR_FILE_1);\r
+\r
+ tet_printf ("Source Initiator URL=%s",LEAVE_DOMAIN_INITIATOR_VALID_PR_FILE_1);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(LEAVE_DOMAIN_INITIATOR_VALID_PR_FILE_1));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_18(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ METERING_INITIATOR_VALID_PR_FILE_1);\r
+\r
+ tet_printf ("Source Initiator URL=%s",METERING_INITIATOR_VALID_PR_FILE_1);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(METERING_INITIATOR_VALID_PR_FILE_1));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_19(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ drm_initiator_info_s initiator_info;\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+\r
+ memset(&initiator_info,0x0,sizeof(drm_initiator_info_s));\r
+ memset(&ws_resp_data,0x0,sizeof(drm_web_server_resp_data_s));\r
+\r
+ snprintf(initiator_info.initiator_url,DRM_MAX_LEN_INITIATOR_URL, "%s",\r
+ INVALID_LICENSE_INITIATOR_PR_FILE_1);\r
+\r
+ tet_printf ("Source Initiator URL=%s",INVALID_LICENSE_INITIATOR_PR_FILE_1);\r
+ tet_printf ("Destination Initiator URL=%s",initiator_info.initiator_url);\r
+\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = NULL;\r
+\r
+ tet_printf ("Source Initiator URL Length=%u",strlen(INVALID_LICENSE_INITIATOR_PR_FILE_1));\r
+ tet_printf ("Destination Initiator URL Length=%u",strlen(initiator_info.initiator_url));\r
+\r
+ ret = drm_process_request(request_type, (void*)&initiator_info,\r
+ (void*)&ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ tet_printf("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_20(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL;\r
+ tet_printf ("Testing:DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("Success:ret = 0x%x", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("Invalid input-output:ret = 0x%x", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_21(void)\r
+{\r
+ int ret = DRM_RETURN_SUCCESS;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES");\r
+\r
+ /*\r
+ * Disabled this test-case because all contents will be unregistered\r
+ * Thus it will interfer with other TCs\r
+ */\r
+#if 0\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES;\r
+ ret = drm_process_request(request_type, NULL,NULL);\r
+#endif\r
+\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_22(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_INSERT_EXT_MEMORY;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_INSERT_EXT_MEMORY");\r
+\r
+ ret = drm_process_request(request_type, NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_23(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY");\r
+\r
+ ret = drm_process_request(request_type, NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_24(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE");\r
+\r
+ drm_submit_roap_message_info_s message_info;\r
+ memset(&message_info,0x0,sizeof(drm_submit_roap_message_info_s));\r
+\r
+ ret = drm_process_request(request_type,(void *)&message_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_25(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_26(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT");\r
+\r
+ drm_submit_roap_user_consent_info_s user_consent_info;\r
+ memset(&user_consent_info,0x0,sizeof(drm_submit_roap_user_consent_info_s));\r
+\r
+ ret = drm_process_request(request_type,(void *)&user_consent_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_27(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_28(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_HTTP_USER_CANCEL;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_HTTP_USER_CANCEL");\r
+\r
+ drm_http_user_cancel_info_s user_cancel_info;\r
+ memset(&user_cancel_info,0x0,sizeof(drm_http_user_cancel_info_s));\r
+\r
+ ret = drm_process_request(request_type,(void *)&user_cancel_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ /**\r
+ * As this TC depends on network connectivity,\r
+ * Thus making it TET_PASS\r
+ */\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_29(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_HTTP_USER_CANCEL;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_HTTP_USER_CANCEL");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_30(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_COPY_FILE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_COPY_FILE");\r
+\r
+ drm_register_copy_file_info_s copy_file_info;\r
+ memset(©_file_info,0x0,sizeof(drm_register_copy_file_info_s));\r
+\r
+ snprintf(copy_file_info.src_file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ snprintf(copy_file_info.dest_file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_11);\r
+ tet_printf("Src file=%s",copy_file_info.src_file_path);\r
+ tet_printf("Dst file=%s",copy_file_info.dest_file_path);\r
+\r
+ ret = drm_process_request(request_type,(void *)©_file_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_31(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_COPY_FILE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_COPY_FILE");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_32(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_MOVE_FILE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_MOVE_FILE");\r
+\r
+ drm_register_copy_file_info_s copy_file_info;\r
+ memset(©_file_info,0x0,sizeof(drm_register_copy_file_info_s));\r
+\r
+ snprintf(copy_file_info.src_file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_1);\r
+ snprintf(copy_file_info.dest_file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_11);\r
+ tet_printf("Src file=%s",copy_file_info.src_file_path);\r
+ tet_printf("Dst file=%s",copy_file_info.dest_file_path);\r
+\r
+ ret = drm_process_request(request_type,(void *)©_file_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_33(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_MOVE_FILE;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_MOVE_FILE");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_34(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_INSERT_EXT_MEMORY;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_INSERT_EXT_MEMORY");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_35(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_36(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_SETAS;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_SETAS");\r
+\r
+ drm_register_setas_info_s setas_info;\r
+ memset(&setas_info,0x0,sizeof(drm_register_setas_info_s));\r
+\r
+ drm_register_setas_resp_data_s resp_info;\r
+ memset(&resp_info, 0x0, sizeof(drm_register_setas_resp_data_s));\r
+\r
+ snprintf(setas_info.file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_12);\r
+ tet_printf("file_path=%s",setas_info.file_path);\r
+\r
+ setas_info.setas_cat = DRM_SETAS_WALLPAPER;\r
+\r
+ ret = drm_process_request(request_type, (void *) &setas_info, (void *) &resp_info);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_37(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_REGISTER_SETAS;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_REGISTER_SETAS");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Positive test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_38(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_SETAS;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_SETAS");\r
+\r
+ drm_unregister_setas_info_s setas_info;\r
+ memset(&setas_info,0x0,sizeof(drm_unregister_setas_info_s));\r
+\r
+ snprintf(setas_info.file_path,256, "%s",FILE_PATH_VALID_FILE_OMA_12);\r
+ tet_printf("file_path=%s",setas_info.file_path);\r
+\r
+ setas_info.setas_cat = DRM_SETAS_WALLPAPER;\r
+\r
+ ret = drm_process_request(request_type,(void *)&setas_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_PASS);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_FAIL);\r
+ }\r
+}\r
+\r
+/**\r
+ * @brief Negative test case of drm_process_request()\r
+ */\r
+static void utc_drmclient_drm_process_request_func_39(void)\r
+{\r
+ int ret = DRM_RETURN_INTERNAL_ERROR;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_UNREGISTER_SETAS;\r
+ tet_printf("Testing:DRM_REQUEST_TYPE_UNREGISTER_SETAS");\r
+\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ tet_printf("ret = 0x%x SUCCESS", ret);\r
+ tet_result(TET_FAIL);\r
+ } else {\r
+ tet_printf("ret = 0x%x FAILED", ret);\r
+ tet_result(TET_PASS);\r
+ }\r
+}\r
--- /dev/null
+Name: drm-client
+Description: DRM client Package
+Version: @VERSION@
+Requires: dlog capi-base-common glib-2.0
+Libs: -L@LIBDIR@ -ldrm-client
+Cflags: -I@INCLUDEDIR@/drm-client
--- /dev/null
+/*
+ * drm-client
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>
+ * Harsha Shekar <h.shekar@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/**
+ * @file drm_client.h
+ * @brief DRM Client API declaration header file.
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)
+ * @author Harsha Shekar (h.shekar@samsung.com)
+ * @version 0.1
+ * @history 0.1: DRM Client API Declarations
+ */
+
+#ifndef __DRM_CLIENT_H__
+#define __DRM_CLIENT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /*__cplusplus */
+
+#include "drm_client_types.h"
+
+/**
+ * @defgroup DRMCLIENT drm-client
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup DRMCLIENT
+ * @{
+ */
+
+/**
+ * An application can check that a file is DRM file
+ * (OMA DRM, PlayReady, DivX etc.)
+ *
+ * @param[in] file_path Specifies the pointer points a DRM file path.
+ * @param[out] is_drm_file DRM_TRUE if the input file is a DRM file
+ * else DRM_FALSE.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ *
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_is_drm_file(const char *file_path, drm_bool_type_e *is_drm_file);
+
+/**
+ * An application can get DRM file type of the file that is
+ * specified in file_path
+ *
+ * @param[in] file_path Specifies the pointer points a DRM file path.
+ * @param[out] file_type DRM file type.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_get_file_type(const char *file_path, drm_file_type_e *file_type);
+
+/**
+ * An application can check that a DRM file has valid license or not.
+ *
+ * @param[in] file_path DRM file path.
+ * @param[in] perm_type Enumeration type of permission.
+ * @param[out] license_status license status.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_get_license_status(const char *file_path,
+ drm_permission_type_e perm_type,
+ drm_license_status_e *license_status);
+
+/**
+ * An application can get DRM Content information for the file
+ * specified in file_path.
+ *
+ * @param[in] file_path DRM file path.
+ * @param[out] content_info Content information.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_get_content_info(const char *file_path,
+ drm_content_info_s *content_info);
+
+/**
+ * An application can get file information of a DRM file.
+ *
+ * @param[in] file_path DRM file path.
+ * @param[out] fileInfo DRM file info.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_get_file_info(const char *file_path, drm_file_info_s *file_info);
+
+/**
+ * An application can get constraints associated with
+ * given permission & given file
+ *
+ * @param[in] file_path DRM file path.
+ * @param[in] perm_type Enumeration type of permission.
+ * @param[out] constraint_info Constraint info.
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_get_constraint_info(const char *file_path,
+ drm_permission_type_e perm_type,
+ drm_constraint_info_s *constraint_info);
+
+/**
+ * An application can check the feasibility of actions to be
+ * performed based on the type of DRM file.
+ *
+ * @param[in] action Action to be taken.
+ * @param[in] action_data Data needed to check action
+ * allowed operation
+ * @param[out] is_allowed DRM_TRUE if action is allowed
+ * else DRM_FALSE
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks
+ * @see
+ * @since 0.1
+ */
+int drm_is_action_allowed(drm_action_type_e action,
+ drm_action_allowed_data_s *action_data,
+ drm_bool_type_e *is_allowed);
+
+
+/**
+ * An application can get the requested data from DRM.
+ *
+ * @param[in] data_type Data types as per enum drm_data_type_e.
+ * @param[in] input Pointer to appropriate structure as per data_type.
+ * @param[out] output Output data. Pointer to appropriate structure as
+ * per data_type.
+ *
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks Please typecast to appropriate data structures
+ * as per data types.
+ *
+ * if data_type = DRM_DATA_TYPE_SECURE_CLOCK
+ * then input type: input = NULL
+ * and output type: output = pointer to struct
+ * drm_secure_clock_data_s
+ *
+ * if data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG
+ * then input type: input = NULL
+ * and output type: output = pointer to int
+ *
+ * if data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID
+ * then input type: input = pointer to file path (const char)
+ * and output type: output = pointer to struct
+ * drm_transaction_id_info_s
+ *
+ * if data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE
+ * then input type: input = NULL
+ * and output type: output = pointer to struct drm_code_info_s
+ *
+ * if data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE
+ * then input type: input = NULL
+ * and output type: output = pointer to struct drm_code_info_s
+ *
+ * @see
+ * @since 0.1
+ */
+int drm_get_data(drm_data_type_e data_type, void *input, void *output);
+
+/**
+ * An application can do particular request to DRM.
+ *
+ * @param[in] request_type Request types as per enum drm_request_type_e.
+ * @param[in] input Pointer to appropriate structure as per
+ * request_type.
+ * @param[out] output Output data. Pointer to appropriate structure as
+ * per request_type.
+ *
+ * @return 0 on success, else a negative error value
+ * @retval DRM_RETURN_SUCCESS on success
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error
+ * @remarks Please typecast to appropriate data structures
+ * as per data types.
+ *
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_FILE
+ * then input type: input = pointer to const char (file_path)
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE
+ * then input type: input = pointer to struct drm_unregister_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES
+ * then input type: input = NULL
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_LICENSE
+ * then input type: input = pointer to
+ * struct drm_register_lic_info_s.
+ * and output type: output = pointer to
+ * struct drm_register_lic_resp_s.
+ *
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL
+ * then input type: input = pointer to struct drm_initiator_info_s
+ * and output type: output = pointer to struct drm_web_server_resp_data_s
+ *
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE
+ * then input type: input = pointer to struct drm_submit_roap_message_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT
+ * then input type: input = pointer to struct drm_submit_roap_user_consent_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_HTTP_USER_CANCEL
+ * then input type: input = pointer to struct drm_http_user_cancel_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_COPY_FILE
+ * then input type: input = pointer to struct drm_register_copy_file_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_MOVE_FILE
+ * then input type: input = pointer to struct drm_register_copy_file_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_INSERT_EXT_MEMORY
+ * then input type: input = NULL
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY
+ * then input type: input = NULL
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_SETAS
+ * then input type: input = pointer to struct drm_register_setas_info_s
+ * and output type: output = NULL
+ *
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_SETAS
+ * then input type: input = pointer to struct drm_unregister_setas_info_s
+ * and output type: output = NULL
+ *
+ * @see
+ * @since 0.1
+ */
+int drm_process_request(drm_request_type_e request_type,
+ void *input, void *output);
+
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /*__DRM_CLIENT_H__ */
--- /dev/null
+/*\r
+ * drm-client\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file drm_client_ipc.h\r
+ * @brief DRM Client Inter process communication declarations.\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: DRM Client Inter process communication declarations.\r
+ */\r
+\r
+#ifndef __DRM_CLIENT_IPC_H__\r
+#define __DRM_CLIENT_IPC_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /*__cplusplus */\r
+\r
+#include "drm_client_types.h"\r
+\r
+/*\r
+ * DRM Socket Path\r
+ */\r
+#define DRM_SOCK_PATH "/tmp/DrmSocket"\r
+\r
+/*\r
+ * Maximum Size of Cookie\r
+ */\r
+#define DRM_MAX_LEN_COOKIE (20)\r
+\r
+/**\r
+* Maximum Request Data length\r
+*/\r
+#define DRM_MAX_REQUEST_DATA_LENGTH (4096)\r
+\r
+/**\r
+* Maximum Response Data length\r
+*/\r
+#define DRM_MAX_RESPONSE_DATA_LENGTH (4096)\r
+\r
+/**\r
+* Maximum number of Data Items\r
+*/\r
+#define DRM_MAX_DATA_ITEMS_NUM (5)\r
+\r
+/**\r
+* Maximum Read/Write Chunk Size\r
+*/\r
+#define DRM_MAX_CHUNK_SIZE (10 * 1024)\r
+\r
+/**\r
+* Maximum concurrent clients supported\r
+*/\r
+#define DRM_MAX_CLIENT_SUPPORTED 10\r
+\r
+/**\r
+* Maximum callback data size\r
+*/\r
+#define DRM_MAX_CB_DATA_SIZE 256\r
+\r
+\r
+\r
+/**\r
+ * @enum drm_request_api_e\r
+ * @brief DRM API names.\r
+ */\r
+typedef enum {\r
+ DRM_API_NONE, /**< For initialization purpose */\r
+ DRM_IS_DRM_FILE, /**< Is DRM file */\r
+ DRM_GET_FILE_TYPE, /**< Get DRM file type */\r
+ DRM_GET_LICENSE_STATUS, /**< Get License Status */\r
+ DRM_GET_CONTENT_INFO, /**< Get Content Information */\r
+ DRM_GET_FILE_INFO, /**< Get DRM file Information */\r
+ DRM_GET_CONSTRAINT_INFO, /**< Get Constraint Information */\r
+ DRM_IS_ACTION_ALLOWED, /**< Is Action allowed */\r
+ DRM_GET_DATA, /**< Get Data */\r
+ DRM_PROCESS_REQUEST, /**< Process Request */\r
+ DRM_API_MAX /**< Max enum value */\r
+} drm_request_api_e;\r
+\r
+/**\r
+ * @struct drm_client_cb_data_s\r
+ * @brief DRM operation callback information structure\r
+ * with additional information.\r
+ */\r
+typedef struct\r
+{\r
+ /** Client Id */\r
+ int client_id;\r
+\r
+ /** Callback operation info */\r
+ drm_user_operation_info_s callback_operation_info;\r
+\r
+ /** Callback user data */\r
+ char call_bk_data[DRM_MAX_CB_DATA_SIZE];\r
+} drm_client_cb_data_s;\r
+\r
+/**\r
+ * @struct drm_client_cb_info_s\r
+ * @brief Client Callback info.\r
+ * @remark Stores details about Registered client callbacks\r
+ */\r
+typedef struct {\r
+\r
+ /** Client Id */\r
+ int client_id;\r
+\r
+ /** Callback */\r
+ drm_operation_cb_s operation_callback;\r
+} drm_client_cb_info_s;\r
+\r
+/**\r
+ * @struct drm_client_info_s\r
+ * @brief Client Information structure.\r
+ * @remark It can be used to track drm clients.\r
+ */\r
+typedef struct {\r
+\r
+ /** Client Id */\r
+ int client_id;\r
+\r
+ /** Process Id */\r
+ int p_id;\r
+\r
+ /** Thread Id */\r
+ int thread_id;\r
+\r
+ /** Sync Socket */\r
+ int sync_sock_fd;\r
+\r
+ /** Async Socket */\r
+ int async_sock_fd;\r
+} drm_client_info_s;\r
+\r
+/**\r
+ * @struct drm_req_fixed_data_s\r
+ * @brief DRM input parameter(request) fixed data structure.\r
+ */\r
+typedef struct {\r
+\r
+ /* Client Request Type */\r
+ drm_request_api_e api_name;\r
+\r
+ /* Permission type */\r
+ drm_permission_type_e permission_type;\r
+\r
+ /* Action type */\r
+ drm_action_type_e action;\r
+\r
+ /* Request Data Type */\r
+ drm_data_type_e data_type;\r
+\r
+ /* Process Request Type */\r
+ drm_request_type_e request_type;\r
+\r
+ /* Client specific Information */\r
+ drm_client_info_s client_info;\r
+\r
+ /** No of data items(Pointers) */\r
+ unsigned int num_data_items;\r
+\r
+ /** Length of each data item */\r
+ unsigned int data_length[DRM_MAX_DATA_ITEMS_NUM];\r
+\r
+ /* Request Data */\r
+ char request_data[DRM_MAX_REQUEST_DATA_LENGTH];\r
+\r
+}drm_req_fixed_data_s;\r
+\r
+/**\r
+ * @struct drm_request_data_s\r
+ * @brief DRM input parameter(request) structure.\r
+ */\r
+typedef struct {\r
+\r
+ /** Fixed Data */\r
+ drm_req_fixed_data_s fixed_data;\r
+\r
+ /** Array of individual data items */\r
+ char *data_items[DRM_MAX_DATA_ITEMS_NUM];\r
+\r
+} drm_request_data_s;\r
+\r
+/**\r
+ * @struct drm_resp_fixed_data_s\r
+ * @brief DRM output parameter(response) fixed data structure.\r
+ */\r
+typedef struct {\r
+\r
+ /* Response Result */\r
+ drm_result_e resp_result;\r
+\r
+ /* Bool value */\r
+ drm_bool_type_e bool_val;\r
+\r
+ /* file type */\r
+ drm_file_type_e file_type;\r
+\r
+ /* License Status */\r
+ drm_license_status_e lic_status;\r
+\r
+ /** No of data items(Pointers) */\r
+ unsigned int num_data_items;\r
+\r
+ /** Length of each data item */\r
+ unsigned int data_length[DRM_MAX_DATA_ITEMS_NUM];\r
+\r
+ /* Response Data */\r
+ char response_data[DRM_MAX_RESPONSE_DATA_LENGTH];\r
+\r
+} drm_resp_fixed_data_s;\r
+\r
+/**\r
+ * @struct drm_response_data_s\r
+ * @brief DRM output parameter(response) structure.\r
+ */\r
+typedef struct {\r
+\r
+ /** Fixed Data */\r
+ drm_resp_fixed_data_s fixed_data;\r
+\r
+ /** Array of individual data items */\r
+ char *data_items[DRM_MAX_DATA_ITEMS_NUM];\r
+\r
+} drm_response_data_s;\r
+\r
+/**\r
+ * This API is used to send a request to the Server to call corresponding API\r
+ *\r
+ * @param[in] client_in Carries the input parameters of Client API to Server\r
+ * @param[out] server_out Carries the output parameters of Client API from Server\r
+ * @return 0 on success & other values on failure\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_out);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /*__DRM_CLIENT_IPC_H__ */\r
--- /dev/null
+/*
+ * drm-client
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>
+ * Harsha Shekar <h.shekar@samsung.com>
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/**
+ * @file drm_client_log.h
+ * @brief DRM Client log specific file.
+ * @author Harsha Shekar (h.shekar@samsung.com)
+ * @version 0.1
+ * @history 0.1: DRM LOG definitions.
+ */
+
+#ifndef __DRM_CLIENT_LOG_H__
+#define __DRM_CLIENT_LOG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /*__cplusplus */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <linux/unistd.h>
+#include <unistd.h>
+#include <string.h>
+
+#define drmclientgettid() (long int)syscall(__NR_gettid)
+#define DRM_CLIENT_FILENAME(X) (strrchr((char *)(X), '/') ? (char *)(strrchr((char*)(X), '/') + 1) : ((char *)(X)))
+
+/*
+ * Enable this flag to use internal logging mechanism
+ */
+//#define __DRM_CLIENT_USE_INTERNAL_LOGGING__
+
+#ifdef __DRM_CLIENT_USE_INTERNAL_LOGGING__
+
+/* Use internal logging mechanism */
+extern const char *__progname;
+
+#define DRM_CLIENT_LOG(FMT, ARG...) do{ \
+ fprintf(stderr, "\n [EXE name=%s]:[PID=%ld]:[TID=%ld]:[%s:%s:%d]:", __progname, (long int)getpid(), drmclientgettid(), DRM_CLIENT_FILENAME(__FILE__), __func__, __LINE__); \
+ fprintf(stderr, FMT, ##ARG); \
+ fprintf(stderr,"\n"); \
+ }while(0);
+
+#define DRM_CLIENT_EXCEPTION(FMT, ARG...) do{ \
+ fprintf(stderr, "\n [EXE name=%s]:[PID=%ld]:[TID=%ld]:[%s:%s:%d]:[DRM-ERROR-CLIENT]:", __progname, (long int)getpid(), drmclientgettid(), DRM_CLIENT_FILENAME(__FILE__), __func__, __LINE__); \
+ fprintf(stderr, FMT, ##ARG); \
+ fprintf(stderr,"\n"); \
+ }while(0);
+
+#define DRM_CLIENT_FRQ_LOG DRM_CLIENT_LOG
+
+#else /*__DRM_CLIENT_USE_INTERNAL_LOGGING__ */
+
+/* Use DLOG logging mechanism */
+#include "dlog.h"
+
+/* DRM Client layer debug messages*/
+#define TAG_DRM_CLIENT "DRM_CLIENT"
+
+/* DLOG Level
+DEBUG Debug message. - always compiled into application, but not logged at run time by default on release mode. on debug mode, this message will be logged at run time.
+INFO Information message - Normal operational messages. above of this priority will always be logged.
+WARN Warning messages - not an error, but indication that an error will occur if action is not taken
+ERROR Error message - indicate error.
+*/
+
+/* Client layer related logs */
+#define DRM_CLIENT_LOG(FMT, ARG...) SLOG(LOG_INFO, TAG_DRM_CLIENT, "[PID=%ld]:[TID=%ld]:[%s:%s:%d]:"FMT, (long int)getpid(), drmclientgettid(), DRM_CLIENT_FILENAME(__FILE__), __func__, __LINE__, ##ARG);
+#define DRM_CLIENT_FRQ_LOG(FMT, ARG...) SLOG(LOG_DEBUG, TAG_DRM_CLIENT, "[PID=%ld]:[TID=%ld]:[%s:%s:%d]:"FMT, (long int)getpid(), drmclientgettid(), DRM_CLIENT_FILENAME(__FILE__), __func__, __LINE__, ##ARG);
+#define DRM_CLIENT_EXCEPTION(FMT, ARG...) SLOG(LOG_ERROR, TAG_DRM_CLIENT, "[PID=%ld]:[TID=%ld]:[%s:%s:%d]:[DRM-ERROR-CLIENT]"FMT"\n", (long int)getpid(), drmclientgettid(), DRM_CLIENT_FILENAME(__FILE__), __func__, __LINE__, ##ARG);
+
+#endif /* __DRM_CLIENT_USE_INTERNAL_LOGGING__ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __DRM_CLIENT_LOG_H__*/
--- /dev/null
+/*\r
+ * drm-client\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file drm_client_types.h\r
+ * @brief DRM Client API macros, structures & enum declaration file.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: First version of DRM Client API macros,\r
+ * structures & enum declarations.\r
+ */\r
+\r
+#ifndef __DRM_CLIENT_TYPES_H__\r
+#define __DRM_CLIENT_TYPES_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /*__cplusplus */\r
+\r
+#include "tizen_error.h"\r
+#include <time.h>\r
+#include <stdio.h>\r
+\r
+\r
+/******************************************************************/\r
+\r
+/*\r
+ * Maximum Length of Author field\r
+ */\r
+#define DRM_MAX_LEN_AUTHOR (64)\r
+\r
+/*\r
+ * Maximum Length of Copyright field\r
+ */\r
+#define DRM_MAX_LEN_COPYRIGHT (64)\r
+\r
+/*\r
+ * Maximum Length of Description field\r
+ */\r
+#define DRM_MAX_LEN_DESCRIPTION (256)\r
+\r
+/*\r
+ * Maximum Length of Icon URI field\r
+ */\r
+#define DRM_MAX_LEN_ICON_URI (256)\r
+\r
+/*\r
+ * Maximum Length of Info URL field\r
+ */\r
+#define DRM_MAX_LEN_INFO_URL (256)\r
+\r
+/*\r
+ * Maximum Length of Content URL field\r
+ */\r
+#define DRM_MAX_LEN_CONTENT_URL (512)\r
+\r
+/*\r
+ * Maximum Length of Rights URL field\r
+ */\r
+#define DRM_MAX_LEN_RIGHTS_URL (256)\r
+\r
+/*\r
+ * Maximum Length of Title field\r
+ */\r
+#define DRM_MAX_LEN_TITLE (256)\r
+\r
+/*\r
+ * Maximum Length of MIME (Content Type) field\r
+ */\r
+#define DRM_MAX_LEN_MIME (64)\r
+\r
+/*\r
+ * Maximum Length of Content ID field\r
+ */\r
+#define DRM_MAX_LEN_CID (256)\r
+\r
+/*\r
+ * Maximum Length of Individual Identity field\r
+ */\r
+#define DRM_MAX_LEN_INDIVIDUAL_IDENTITY (64)\r
+\r
+/*\r
+ * Maximum Length of System Identity field\r
+ */\r
+#define DRM_MAX_LEN_SYSTEM_IDENTITY (64)\r
+\r
+/*\r
+ * Maximum Length of original filename for PlayReady envelope\r
+ */\r
+#define DRM_MAX_LEN_FILEPATH (256)\r
+\r
+/**\r
+* Maximum length of Transaction ID of the DCF\r
+*/\r
+#define DRM_MAX_SIZE_TRANSACTION_ID (17)\r
+\r
+/**\r
+* Maximum length of DivX code (Registration / De-registration code )\r
+*/\r
+#define DRM_MAX_SIZE_DIVX_CODE (16)\r
+\r
+/**\r
+* Maximum length of License Data\r
+*/\r
+#define DRM_MAX_LEN_LICENSE_DATA (3000)\r
+\r
+/**\r
+* Maximum length of Initiator URL\r
+*/\r
+#define DRM_MAX_LEN_INITIATOR_URL (512)\r
+\r
+/**\r
+* Maximum length of IP Address\r
+*/\r
+#define DRM_MAX_LEN_IP_ADDR (64)\r
+\r
+/*\r
+ * Max length of APP ID\r
+ */\r
+#define DRM_MAX_LEN_APP_ID (15)\r
+\r
+/*\r
+ * Max length of User ID\r
+ */\r
+#define DRM_MAX_LEN_USER_GUID (15)\r
+\r
+/*\r
+ * Max length of Device ID\r
+ */\r
+#define DRM_MAX_LEN_DEVICE_ID (15)\r
+\r
+/*\r
+ * Max length of Order ID\r
+ */\r
+#define DRM_MAX_LEN_ORDER_ID (23)\r
+\r
+/*\r
+ * Max length of Service ID\r
+ */\r
+#define DRM_MAX_LEN_SERVICE_ID (31)\r
+\r
+/*\r
+ * Max length of Account ID\r
+ */\r
+#define DRM_MAX_LEN_ACCOUNT_ID (31)\r
+\r
+/****************************************************************/\r
+\r
+/**\r
+ * @enum drm_result_e\r
+ * @brief DRM Return values.\r
+ */\r
+typedef enum {\r
+ /**< Success */\r
+ DRM_RETURN_SUCCESS = 0,\r
+ /**< Invalid Argument */\r
+ DRM_RETURN_INVALID_ARG = TIZEN_ERROR_INVALID_PARAMETER,\r
+ /**< Insufficient Memory */\r
+ DRM_RETURN_INSUFFICIENT_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,\r
+ /**< Parsing Error */\r
+ DRM_RETURN_PARSING_ERROR = TIZEN_ERROR_DRM_CLASS | 0x01,\r
+ /**< DB Error */\r
+ DRM_RETURN_DB_ERROR = TIZEN_ERROR_DRM_CLASS | 0x02,\r
+ /**< File Error */\r
+ DRM_RETURN_FILE_ERROR = TIZEN_ERROR_DRM_CLASS | 0x03,\r
+ /**< Communication Error */\r
+ DRM_RETURN_COMMUNICATION_ERROR = TIZEN_ERROR_DRM_CLASS | 0x04,\r
+ /**< OPL Error */\r
+ DRM_RETURN_OPL_ERROR = TIZEN_ERROR_DRM_CLASS | 0x05,\r
+ /**< Internal Error */\r
+ DRM_RETURN_INTERNAL_ERROR = TIZEN_ERROR_UNKNOWN\r
+} drm_result_e;\r
+\r
+/**\r
+ * @enum drm_bool_type_e\r
+ * @brief DRM Bool values.\r
+ */\r
+typedef enum {\r
+ DRM_FALSE = 0, /**< false */\r
+ DRM_TRUE = 1, /**< true */\r
+ DRM_UNKNOWN = 0xFFFFFFFF /**< error */\r
+} drm_bool_type_e;\r
+\r
+/**\r
+ * @enum drm_file_type_e\r
+ * @brief DRM file types.\r
+ */\r
+typedef enum {\r
+ DRM_TYPE_UNDEFINED, /**< For initialization purpose */\r
+ DRM_TYPE_OMA_V1, /**< OMA DRM v1 file */\r
+ DRM_TYPE_OMA_V2, /**< OMA DRM v2 file */\r
+ DRM_TYPE_PLAYREADY, /**< PlayReady file */\r
+ DRM_TYPE_PLAYREADY_ENVELOPE, /**< PlayReady Envelope file */\r
+ DRM_TYPE_DIVX, /**< DivX file */\r
+ DRM_TYPE_OMA_PD, /**< Progressive Download file */\r
+ DRM_TYPE_PIFF, /**< PIFF file */\r
+ DRM_TYPE_SAPPS /**< Samsung Apps */\r
+} drm_file_type_e;\r
+\r
+/**\r
+ * @enum drm_permission_type_e\r
+ * @brief DRM Permission types.\r
+ */\r
+typedef enum {\r
+ DRM_PERMISSION_TYPE_NONE, /**< For initialization purpose */\r
+ DRM_PERMISSION_TYPE_ANY, /**< Any permission */\r
+ DRM_PERMISSION_TYPE_PLAY, /**< Play Permission */\r
+ DRM_PERMISSION_TYPE_COLLABORATIVE_PLAY, /**< Collaborative Play\r
+ (e.g gaming application) */\r
+\r
+ DRM_PERMISSION_TYPE_DISPLAY, /**< Display Permission */\r
+ DRM_PERMISSION_TYPE_EXECUTE, /**< Execute Permission */\r
+ DRM_PERMISSION_TYPE_PRINT, /**< Print Permission */\r
+ DRM_PERMISSION_TYPE_EXPORT_COPY, /**< Export-copy permission */\r
+ DRM_PERMISSION_TYPE_EXPORT_MOVE /**< Export-move permission */\r
+} drm_permission_type_e;\r
+\r
+/**\r
+ * @enum drm_license_status_e\r
+ * @brief DRM License status.\r
+ */\r
+typedef enum {\r
+ DRM_LICENSE_STATUS_UNDEFINED, /**< For initialization purpose */\r
+ DRM_LICENSE_STATUS_VALID, /**< Valid License */\r
+ DRM_LICENSE_STATUS_FUTURE_USE, /**< License for future use */\r
+ DRM_LICENSE_STATUS_EXPIRED, /**< Expired License */\r
+ DRM_LICENSE_STATUS_NO_LICENSE, /**< No License */\r
+} drm_license_status_e;\r
+\r
+/**\r
+ * @enum drm_action_type_e\r
+ * @brief DRM Action types.\r
+ */\r
+typedef enum {\r
+ DRM_ACTION_UNDEFINED, /**< for initialization purpose */\r
+ DRM_IS_FORWARDING_ALLOWED, /**< if a file can be forwarded */\r
+ DRM_HAS_VALID_SETAS_STATUS, /**< if a file can be SETAS */\r
+ DRM_IS_DEVICE_ACTIVATED, /**< if a device is DIVX activated */\r
+ DRM_IS_VALID_SECURE_CLOCK /**< if Secure Clock is set */\r
+} drm_action_type_e;\r
+\r
+/**\r
+ * @enum drm_method_type_e\r
+ * @brief DRM method types.\r
+ */\r
+typedef enum {\r
+ DRM_METHOD_TYPE_UNDEFINED, /**< For initialization purpose */\r
+ DRM_METHOD_TYPE_FORWARD_LOCK, /**< OMA DRM forward lock */\r
+ DRM_METHOD_TYPE_COMBINED_DELIVERY, /**< OMA DRM Combined Delivery */\r
+ DRM_METHOD_TYPE_SEPARATE_DELIVERY /**< OMA DRM Separate Delivery\r
+ & OMA DRM v2 */\r
+}drm_method_type_e;\r
+\r
+/**\r
+ * @enum drm_rights_version_e\r
+ * @brief DRM Rights Version.\r
+ */\r
+typedef enum {\r
+ DRM_OMA_DRMV1_RIGHTS, /**< OMA DRM v1 */\r
+ DRM_OMA_DRMV2_RIGHTS, /**< OMA DRM v2 */\r
+ DRM_UNDEFINED_RIGHTS = 3 /**< dummy */\r
+} drm_rights_version_e;\r
+\r
+/**\r
+ * @enum drm_constraint_identity_type_e\r
+ * @brief DRM Constraint Identity type.\r
+ */\r
+typedef enum {\r
+ DRM_CONSTRAINT_IDENTITY_TYPE_NONE, /**< For initialization */\r
+ DRM_CONSTRAINT_IDENTITY_TYPE_IMEI, /**< IMEI */\r
+ DRM_CONSTRAINT_IDENTITY_TYPE_IMSI, /**< IMSI */\r
+ DRM_CONSTRAINT_IDENTITY_TYPE_MSISDN, /**< MS-ISDN */\r
+ DRM_CONSTRAINT_IDENTITY_TYPE_WIM /**< WIM\r
+ (Wireless/WAP Identity Module ) */\r
+} drm_constraint_identity_type_e;\r
+\r
+/**\r
+ * @enum drm_setas_category_e\r
+ * @brief DRM SETAS type.\r
+ */\r
+typedef enum {\r
+ DRM_SETAS_NONE = -1, /**< No set as operation */\r
+ DRM_SETAS_WALLPAPER = 0, /**< Set As Wallpaper */\r
+ DRM_SETAS_RINGTONE = 2, /**< Set As Ringtone */\r
+} drm_setas_category_e;\r
+\r
+/**\r
+ * @enum drm_data_type_e\r
+ * @brief DRM Requested Data types.\r
+ */\r
+typedef enum {\r
+ /* For initialization purpose */\r
+ DRM_DATA_TYPE_NONE = -1,\r
+\r
+ /* Secure Clock Information */\r
+ DRM_DATA_TYPE_SECURE_CLOCK = 0,\r
+\r
+ /* Transaction Tracking flag status information */\r
+ DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG,\r
+\r
+ /* Transaction Tracking ID information */\r
+ DRM_DATA_TYPE_TRANSACTION_TRACKING_ID,\r
+\r
+ /* DivX Registration Code information */\r
+ DRM_DATA_TYPE_DIVX_REGISTRATION_CODE,\r
+\r
+ /* DivX De-registration Code information */\r
+ DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE,\r
+} drm_data_type_e;\r
+\r
+/**\r
+ * @enum drm_request_type_e\r
+ * @brief DRM Request types.\r
+ */\r
+typedef enum {\r
+ /* For initialization purpose */\r
+ DRM_REQUEST_TYPE_NONE = -1,\r
+\r
+ /* Request to Register DRM file in DB */\r
+ DRM_REQUEST_TYPE_REGISTER_FILE = 0,\r
+\r
+ /* Request to Un-register DRM file from DB */\r
+ DRM_REQUEST_TYPE_UNREGISTER_FILE,\r
+\r
+ /* Request to Un-register All DRM files from DB */\r
+ DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES,\r
+\r
+ /* Request to Register / install License into DB */\r
+ DRM_REQUEST_TYPE_REGISTER_LICENSE,\r
+\r
+ /* Request to start Initiator processing for PlayReady */\r
+ DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL,\r
+\r
+ /* Submit Roap Message */\r
+ DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE,\r
+\r
+ /* Submit Roap User Consent */\r
+ DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT,\r
+\r
+ /* HTTP User Cancel */\r
+ DRM_REQUEST_TYPE_HTTP_USER_CANCEL,\r
+\r
+ /* Register Copy File */\r
+ DRM_REQUEST_TYPE_REGISTER_COPY_FILE,\r
+\r
+ /* Register Move File */\r
+ DRM_REQUEST_TYPE_REGISTER_MOVE_FILE,\r
+\r
+ /* Insert External Memory */\r
+ DRM_REQUEST_TYPE_INSERT_EXT_MEMORY,\r
+\r
+ /* Extract External Memory */\r
+ DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY,\r
+\r
+ /* Register SetAs */\r
+ DRM_REQUEST_TYPE_REGISTER_SETAS,\r
+\r
+ /* Unregister SetAs */\r
+ DRM_REQUEST_TYPE_UNREGISTER_SETAS\r
+\r
+} drm_request_type_e;\r
+\r
+/**\r
+ * @enum drm_roap_init_src_e\r
+ * @brief DRM ROAP initialization source.\r
+ */\r
+typedef enum{\r
+ /**< dummy */\r
+ DRM_ROAP_INIT_FROM_UNKNOWN,\r
+\r
+ /**< roap is initialized from browser*/\r
+ DRM_ROAP_INIT_FROM_BROWSER,\r
+\r
+ /**< roap is initialized from DRM content */\r
+ DRM_ROAP_INIT_FROM_CONTENT,\r
+\r
+ /**< roap is initialized from WAPPUSH */\r
+ DRM_ROAP_INIT_FROM_WAPPUSH\r
+} drm_roap_init_src_e;\r
+\r
+/**\r
+ * @enum drm_operation_type_e\r
+ * @brief DRM operation type.\r
+ */\r
+typedef enum {\r
+ /* License Acquisition Operation */\r
+ DRM_OPERATION_TYPE_LICENSE_ACQ,\r
+\r
+ /* Join Domain Operation */\r
+ DRM_OPERATION_TYPE_JOIN_DOMAIN,\r
+\r
+ /* Leave Domain Operation */\r
+ DRM_OPERATION_TYPE_LEAVE_DOMAIN,\r
+\r
+ /* Metering Operation */\r
+ DRM_OPERATION_TYPE_METERING_INFO,\r
+\r
+ /* Unknown Operation type */\r
+ DRM_OPERATION_TYPE_UNKNOWN\r
+} drm_operation_type_e;\r
+\r
+/**\r
+ * @enum drm_operation_status_e\r
+ * @brief DRM operation status.\r
+ */\r
+typedef enum {\r
+ /** DRM operation is started */\r
+ DRM_OPERATION_STATUS_STARTED,\r
+\r
+ /** DRM operation is in Progress */\r
+ DRM_OPERATION_STATUS_INPROGRESS,\r
+\r
+ /** DRM operation is Completed */\r
+ DRM_OPERATION_STATUS_COMPLETED,\r
+\r
+ /** During DRM operation, additional operation is to be performed */\r
+ DRM_OPERATION_STATUS_ADDITIONAL_INFO,\r
+ /*Operation is canceled*/\r
+ DRM_OPERATION_STATUS_CANCELED,\r
+ /** An error occurred with respect to DRM operation */\r
+ DRM_OPERATION_STATUS_ERROR\r
+} drm_operation_status_e;\r
+\r
+/**\r
+ * @enum drm_web_server_result_code_e\r
+ * @brief DRM Return values.\r
+ */\r
+typedef enum {\r
+ /** No server Error */\r
+ DRM_RESULT_CODE_NONE,\r
+\r
+ /** Device Certificate is revoked.\r
+ * User shall be informed that their device needs to be updated.\r
+ */\r
+ DRM_RESULT_CODE_DEVCERT_REVOKED,\r
+\r
+ /** Indicates a server problem.Device shall silently retry 3 times.\r
+ * If failure persists, user shall be informed about a server failure\r
+ * and to try again later\r
+ */\r
+ DRM_RESULT_CODE_INTERNAL_ERROR,\r
+\r
+ /** Means an invalid protocol message.\r
+ * This shall never happen unless there's been a "man in the middle"\r
+ * attack. Device shall perform a retry.\r
+ */\r
+ DRM_RESULT_CODE_INVALID_MESSAGE,\r
+\r
+ /** Means that the device limit has been reached for this domain and\r
+ * therefore the device cannot join this Domain.\r
+ * The application on the device shall provide the appropriate\r
+ * response to the end user.\r
+ */\r
+ DRM_RESULT_CODE_DEVICE_LIMIT_REACHED,\r
+\r
+ /** Indicates that the device shall join a Domain and then\r
+ * retry license acquisition.\r
+ */\r
+ DRM_RESULT_CODE_DOMAIN_REQUIRED,\r
+\r
+ /** Indicates that the device shall renew the Domain Certificate\r
+ * for this Domain. The device shall join Domain and then retry\r
+ * license acquisition.\r
+ */\r
+ DRM_RESULT_CODE_RENEW_DOMAIN,\r
+\r
+ /** Device shall leave Domain */\r
+ DRM_RESULT_CODE_NOT_A_MEMBER,\r
+\r
+ /** Means that device is not using correct protocol, most likely\r
+ * because server has been updated since device was manufactured.\r
+ * The device shall notify user to check for updates or fail gracefully.\r
+ */\r
+ DRM_RESULT_CODE_PROTOCOL_VERSION_MISMATCH,\r
+\r
+ /** User shall always be authenticated before making license acquisitions.\r
+ * If this error happens, device shall notify user to contact\r
+ * customer service.\r
+ */\r
+ DRM_RESULT_CODE_UNKNOWN_ACCOUNTID,\r
+\r
+ /** Device shall follow redirect. */\r
+ DRM_RESULT_CODE_PROTOCOL_REDIRECT,\r
+\r
+ /** Service specific Server errors */\r
+ DRM_RESULT_CODE_SERVICE_SPECIFIC,\r
+} drm_web_server_result_code_e;\r
+\r
+/**\r
+ * @enum drm_initiator_type\r
+ * @brief DRM Initiator type\r
+ */\r
+typedef enum {\r
+ DRM_INITIATOR_TYPE_NONE = -1,\r
+ DRM_INITIATOR_TYPE_INITIATOR_URL,\r
+ DRM_INITIATOR_TYPE_LICENSE_ACQ,\r
+ DRM_INITIATOR_TYPE_JOIN_DOMAIN,\r
+ DRM_INITIATOR_TYPE_LEAVE_DOMAIN,\r
+ DRM_INITIATOR_TYPE_METERING_INFO\r
+} drm_initiator_type;\r
+\r
+/**\r
+ * @enum drm_const_type_e\r
+ * @brief DRM constraint types\r
+ */\r
+typedef enum {\r
+ DRM_CONSTRAINT_TYPE_RENTAL = 0,\r
+ DRM_CONSTRAINT_TYPE_RENTAL_UNLIMITED,\r
+ DRM_CONSTRAINT_TYPE_PURCHASE,\r
+ DRM_CONSTRAINT_TYPE_BASE,\r
+ DRM_CONSTRAINT_TYPE_EXPIRED,\r
+ DRM_CONSTRAINT_TYPE_NOT_AUTHORIZED,\r
+ DRM_CONSTRAINT_TYPE_INVALID_DRM_VERSION,\r
+ DRM_CONSTRAINT_TYPE_UNKNOWN_TYPE,\r
+ DRM_CONSTRAINT_TYPE_GENERAL_ERROR\r
+} drm_const_type_e;\r
+\r
+/**\r
+ * @struct drm_content_info_s\r
+ * @brief DRM content info structure.\r
+ */\r
+typedef struct {\r
+ /**< Author of original content */\r
+ char author[DRM_MAX_LEN_AUTHOR];\r
+\r
+ /**< Copyright information */\r
+ char copyright[DRM_MAX_LEN_COPYRIGHT];\r
+\r
+ /**< Content information */\r
+ char description[DRM_MAX_LEN_DESCRIPTION];\r
+\r
+ char icon_uri[DRM_MAX_LEN_ICON_URI]; /**< Icon URI */\r
+ char info_url[DRM_MAX_LEN_INFO_URL]; /**< Information URL */\r
+ char content_url[DRM_MAX_LEN_CONTENT_URL]; /**< Content URL */\r
+ char rights_url[DRM_MAX_LEN_RIGHTS_URL]; /**< Rights URL */\r
+ char title[DRM_MAX_LEN_TITLE]; /**< Content Title */\r
+\r
+ /**< Original MIME type */\r
+ char mime_type[DRM_MAX_LEN_MIME];\r
+ char content_id[DRM_MAX_LEN_CID]; /**< Content ID */\r
+\r
+} drm_content_info_s;\r
+\r
+/**\r
+ * @struct drm_file_oma_info_s\r
+ * @brief DRM (OMA)file info structure.\r
+ */\r
+typedef struct {\r
+ drm_rights_version_e version; /**< OMA DRM Rights Version */\r
+ drm_method_type_e method; /**< OMA DRM Method type */\r
+}drm_file_oma_info_s;\r
+\r
+/**\r
+ * @struct drm_file_pr_env_info_s\r
+ * @brief DRM (PlayReady Envelope)file info structure.\r
+ */\r
+typedef struct {\r
+ /**< Original content file name inside Playready - Envelope Contents */\r
+ char org_file_name[DRM_MAX_LEN_FILEPATH];\r
+\r
+ /**< Original content file size inside Playready - Envelope Contents */\r
+ unsigned int org_file_size;\r
+}drm_file_pr_env_info_s;\r
+\r
+/**\r
+ * @struct drm_file_sapps_info_s\r
+ * @brief DRM (SAPPS)file info structure.\r
+ */\r
+typedef struct {\r
+ char content_id[DRM_MAX_LEN_CID]; /**< Content ID */\r
+ char rights_url[DRM_MAX_LEN_RIGHTS_URL]; /**< Rights URL */\r
+} drm_file_sapps_info_s;\r
+\r
+/**\r
+ * @struct drm_file_info_s\r
+ * @brief DRM file info structure.\r
+ */\r
+typedef struct {\r
+ drm_file_oma_info_s oma_info; /**< OMA DRM file info */\r
+ drm_file_pr_env_info_s pr_env_info; /**< PlayReady\r
+ Envelope file info */\r
+ drm_file_sapps_info_s sapps_info; /**< SAPPS file info */\r
+} drm_file_info_s;\r
+\r
+/**\r
+ * @struct drm_constraint_type_s\r
+ * @brief DRM Constraint type structure.\r
+ */\r
+typedef struct {\r
+ int is_unlimited; /**< Unlimited constraints */\r
+ int is_count; /**< Count constraint present/not present */\r
+ int is_datetime; /**< Datetime constraint present/not present */\r
+ int is_interval; /**< Interval constraint present/not present */\r
+ int is_timedcount; /**< TimedCount constraint present/not present */\r
+ int is_accumulated; /**< Accumulated constraint present/not present */\r
+ int is_individual; /**< Individual constraint present/not present */\r
+ int is_system; /**< System constraint present/not present */\r
+ drm_const_type_e constraint_type; /**< Divx constraint types */\r
+} drm_constraint_type_s;\r
+\r
+/**\r
+ * @struct drm_constraint_info_s\r
+ * @brief DRM Constraint info structure.\r
+ */\r
+typedef struct {\r
+\r
+ /**< Constraint type*/\r
+ drm_constraint_type_s const_type;\r
+\r
+ /**< Original Count */\r
+ int original_count;\r
+\r
+ /**< Remaining Count */\r
+ int remaining_count;\r
+\r
+ /**< Start Time */\r
+ /*\r
+ * As per definition of struct tm:-\r
+ * int tm_sec seconds [0,61]\r
+ * int tm_min minutes [0,59]\r
+ * int tm_hour hour [0,23]\r
+ * int tm_mday day of month [1,31]\r
+ * int tm_mon month of year [0,11]\r
+ * int tm_year years since 1900\r
+ * int tm_wday day of week [0,6] (Sunday = 0)\r
+ * int tm_yday day of year [0,365]\r
+ * int tm_isdst daylight savings flag\r
+ *\r
+ */\r
+\r
+ /* if tm_year = 109 then it means actual year = 109 + 1900 = 2009\r
+ * if tm_mon = 0 then it means actual month = 0 + 1 = 1 = January\r
+ * if tm_mon = 1 then it means actual month = 1 + 1 = 2 = Feb\r
+ * Other parameters doesn't need any manipulation\r
+ * if tm_mday = 5 then it means day of the month = 5\r
+ */\r
+ struct tm start_time;\r
+\r
+ /**< End time */\r
+ /*\r
+ * As per definition of struct tm:-\r
+ * int tm_sec seconds [0,61]\r
+ * int tm_min minutes [0,59]\r
+ * int tm_hour hour [0,23]\r
+ * int tm_mday day of month [1,31]\r
+ * int tm_mon month of year [0,11]\r
+ * int tm_year years since 1900\r
+ * int tm_wday day of week [0,6] (Sunday = 0)\r
+ * int tm_yday day of year [0,365]\r
+ * int tm_isdst daylight savings flag\r
+ *\r
+ */\r
+\r
+ /* if tm_year = 109 then it means actual year = 109 + 1900 = 2009\r
+ * if tm_mon = 0 then it means actual month = 0 + 1 = 1 = January\r
+ * if tm_mon = 1 then it means actual month = 1 + 1 = 2 = Feb\r
+ * Other parameters doesn't need any manipulation\r
+ * if tm_mday = 5 then it means day of the month = 5\r
+ */\r
+ struct tm end_time;\r
+\r
+ /**< Interval Time */\r
+ /*\r
+ * In interval time calculation, no need to manipulate it.\r
+ * e.g if tm_year = 109 then it means actual year = 109.\r
+ * It means license constraint says that content can be consumed in 109 years.\r
+ *\r
+ * e.g:-\r
+ * tm_year = 1\r
+ * tm_mon = 0\r
+ * tm_mday = 0\r
+ * tm_hour = 1\r
+ * tm_min = 10\r
+ * tm_sec = 40\r
+ *\r
+ * It means content has validity for 1 year, 1 hour, 1 minute & 40 seconds.\r
+ */\r
+ struct tm interval_time;\r
+\r
+ /**< Timed original count */\r
+ int timed_original_count;\r
+\r
+ /**< Timed Remaining count */\r
+ int timed_remaining_count;\r
+\r
+ /**< Timer attribute of Timed-count constraint */\r
+ int timed_count_timer;\r
+\r
+ /**< Accumulated original time in seconds */\r
+ int accumulated_original_seconds;\r
+\r
+ /**< Accumulated remaining time in seconds */\r
+ int accumulated_remaining_seconds;\r
+\r
+ /**< individual identity type */\r
+ drm_constraint_identity_type_e individual_identity_type;\r
+\r
+ /**< individual identity */\r
+ char individual_id[DRM_MAX_LEN_INDIVIDUAL_IDENTITY];\r
+\r
+ /**< system identity type */\r
+ drm_constraint_identity_type_e system_identity_type;\r
+\r
+ /**< system identity */\r
+ char system_id[DRM_MAX_LEN_SYSTEM_IDENTITY];\r
+} drm_constraint_info_s;\r
+\r
+/**\r
+* @struct drm_action_allowed_data_s\r
+* @brief DRM Action Allowed structure.\r
+*/\r
+typedef struct {\r
+ /**< File Path */\r
+ char file_path[DRM_MAX_LEN_FILEPATH];\r
+ /**< Additional input data */\r
+ int data;\r
+}drm_action_allowed_data_s;\r
+\r
+/**\r
+* @struct drm_secure_clock_data_s\r
+* @brief DRM secure clock data structure.\r
+*/\r
+typedef struct {\r
+ /** Flag to inform whether secure clock is SET or NOT SET\r
+ * is_secure_clock_set = 0 => Secure clock NOT SET.\r
+ * is_secure_clock_set = 1 => Secure clock is SET.\r
+ */\r
+ int is_secure_clock_set;\r
+\r
+ /** Secure clock data */\r
+ struct tm secure_clock;\r
+}drm_secure_clock_data_s;\r
+\r
+/**\r
+ * @struct drm_transaction_id_info_s\r
+ * @brief DRM Transaction tracking ID structure.\r
+ */\r
+typedef struct {\r
+ /* transaction ID value*/\r
+ char tr_id[DRM_MAX_SIZE_TRANSACTION_ID];\r
+\r
+ /*\r
+ * length of Transaction ID string.\r
+ * The value zero(0) indicates that transaction id is not available\r
+ */\r
+ unsigned int tr_id_len;\r
+}drm_transaction_id_info_s;\r
+\r
+/**\r
+ * @struct drm_code_info_s\r
+ * @brief DRM DivX (Registration / De-registration)Code information structure.\r
+ */\r
+typedef struct {\r
+ /** Code */\r
+ char code[DRM_MAX_SIZE_DIVX_CODE];\r
+\r
+ /**\r
+ * length of Code.\r
+ * The value zero(0) indicates that Code is not available.\r
+ */\r
+ unsigned int code_len;\r
+}drm_code_info_s;\r
+\r
+/**\r
+ * @struct drm_unregister_info_s\r
+ * @brief DRM Unregister Information structure.\r
+ */\r
+typedef struct {\r
+ /** file path to be unregistered */\r
+ char file_path[DRM_MAX_LEN_FILEPATH];\r
+\r
+ /*\r
+ * Flag to inform whether license also need to be removed\r
+ * remove_license = 0 => Do not remove License.\r
+ * remove_license = 1 => Remove License.\r
+ */\r
+ int remove_license;\r
+}drm_unregister_info_s;\r
+\r
+/**\r
+ * @struct drm_user_operation_info_s\r
+ * @brief DRM operation information structure.\r
+ */\r
+typedef struct {\r
+ /** Type of OPERATION */\r
+ drm_operation_type_e operation_type;\r
+\r
+ /** Status of OPERATION */\r
+ drm_operation_status_e operation_status;\r
+} drm_user_operation_info_s;\r
+\r
+/**\r
+ * Function pointer to handle DRM operation notifications\r
+ *\r
+ * @param[out] operation_info operation information .\r
+ * @param[out] output_data Output data specific to operation.\r
+ * @return None\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+typedef void (*drm_operation_cb)(drm_user_operation_info_s *operation_info,\r
+ void *output_data);\r
+\r
+/**\r
+ * @struct drm_operation_cb_s\r
+ * @brief DRM Operation callback structure.\r
+ * @remark Currently one member but new callback can be added depending on\r
+ * requirements.\r
+ */\r
+typedef struct {\r
+ /** Callback */\r
+ drm_operation_cb callback;\r
+}drm_operation_cb_s;\r
+\r
+/**\r
+ * @struct drm_register_lic_info_s\r
+ * @brief DRM License register Information structure.\r
+ */\r
+typedef struct {\r
+ /** Pointer to license buffer data */\r
+ unsigned char lic_data[DRM_MAX_LEN_LICENSE_DATA];\r
+\r
+ /** license buffer data length */\r
+ unsigned int lic_data_len;\r
+\r
+ /** license version (OMA DRM v1 or OMA DRM v2) */\r
+ drm_rights_version_e lic_version;\r
+\r
+ /** Source of ROAP Initialization */\r
+ drm_roap_init_src_e roap_init_src;\r
+\r
+ /** Callback for status update */\r
+ drm_operation_cb_s operation_callback;\r
+}drm_register_lic_info_s;\r
+\r
+/**\r
+ * @struct drm_register_lic_resp_s\r
+ * @brief DRM License register Output parameter.\r
+ */\r
+typedef struct {\r
+\r
+ /** Content ID */\r
+ char cid[DRM_MAX_LEN_CID];\r
+\r
+}drm_register_lic_resp_s;\r
+\r
+/**\r
+ * @struct drm_custom_data_info_s\r
+ * @brief DRM Custom Data Information.\r
+ */\r
+typedef struct {\r
+ char app_id[DRM_MAX_LEN_APP_ID + 1]; /** App ID */\r
+ char user_guid[DRM_MAX_LEN_USER_GUID +1]; /** User GID */\r
+ char device_id[DRM_MAX_LEN_DEVICE_ID + 1]; /** Device ID */\r
+ char order_id[DRM_MAX_LEN_ORDER_ID + 1]; /** Order ID */\r
+ char service_id[DRM_MAX_LEN_SERVICE_ID + 1]; /** Service ID */\r
+ char account_id[DRM_MAX_LEN_ACCOUNT_ID + 1]; /** Account ID */\r
+} drm_custom_data_info_s;\r
+\r
+/**\r
+ * @struct drm_initiator_info_s\r
+ * @brief DRM License Initiator Information structure.\r
+ */\r
+typedef struct {\r
+ /** Pointer to Initiator URL */\r
+ char initiator_url[DRM_MAX_LEN_INITIATOR_URL];\r
+\r
+ /** Initiator URL length */\r
+ unsigned int initiator_url_len;\r
+\r
+ /** Callback for status update */\r
+ drm_operation_cb_s operation_callback;\r
+\r
+ /** Initiator Type */\r
+ drm_initiator_type init_type;\r
+\r
+ /** Custom Data */\r
+ drm_custom_data_info_s custom_data;\r
+}drm_initiator_info_s;\r
+\r
+/**\r
+ * @struct drm_web_server_resp_data_s\r
+ * @brief DRM Web Server Response Data After submitting Initiator URL Information.\r
+ */\r
+typedef struct {\r
+ /** Content URL. Application can download content using this URL if available*/\r
+ char content_url[DRM_MAX_LEN_CONTENT_URL];\r
+\r
+ /** Server Result Code */\r
+ drm_web_server_result_code_e result_code;\r
+} drm_web_server_resp_data_s;\r
+\r
+/**\r
+ * Function pointer to handle DRM Roap Notifications\r
+ *\r
+ * @param[out] cbParam Parameter\r
+ * @param[out] appSessionData Application Session Data\r
+ * @param[out] agentSessionData DRM Agent Session Data\r
+ * @return None\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+typedef void (*drm_roap_service_cb) (void *cbParam, /**<parameter */\r
+ void *appSessionData, /**<application session data */\r
+ void *agentSessionData /**<DRM agent session data */\r
+ );\r
+\r
+/**\r
+* Type Definition Template\r
+*/\r
+typedef drm_roap_service_cb drm_roap_notify_cb;\r
+/**\r
+* Type Definition Template\r
+*/\r
+typedef drm_roap_service_cb drm_roap_consent_cb;\r
+/**\r
+* Type Definition Template\r
+*/\r
+typedef drm_roap_service_cb drm_roap_result_cb;\r
+\r
+/**\r
+ * @struct drm_roap_notification_cb_s\r
+ * @brief DRM Roap Notification callback structure.\r
+ */\r
+typedef struct {\r
+ drm_roap_notify_cb progressNotify; /** Progress Notify */\r
+ drm_roap_consent_cb userConsent; /** User Consent */\r
+ drm_roap_result_cb roapResult; /** Roap Result */\r
+} drm_roap_notification_cb_s;\r
+\r
+/**\r
+ * Function pointer to handle Start of Content download\r
+ *\r
+ * @param[out] appSessionData App Session Data.\r
+ * @return int\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+typedef int (*drm_content_start_download_cb) (void *appSessionData);\r
+\r
+/**\r
+ * Function pointer to handle Progress of ODF download\r
+ *\r
+ * @param[out] pData Data\r
+ * @param[out] DataLen Data length\r
+ * @param[out] appSessionData App Session Data.\r
+ * @return int\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+typedef int (*drm_content_progress_download_cb) (const void *pData,\r
+ unsigned int DataLen,\r
+ void *appSessionData);\r
+\r
+/**\r
+ * Function pointer to handle Start of ODF download\r
+ *\r
+ * @param[out] appSessionData App Session Data.\r
+ * @return int\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+typedef int (*drm_content_finish_download_cb) (void *appSessionData);\r
+\r
+/**\r
+ * @struct drm_roap_notification_cb_s\r
+ * @brief DRM Roap Notification callback structure.\r
+ */\r
+typedef struct {\r
+ drm_content_start_download_cb start_download_cb; /** Start Download */\r
+ drm_content_progress_download_cb progress_download_cb; /** Progress Download */\r
+ drm_content_finish_download_cb finish_download_cb; /** Finish Download */\r
+} drm_content_download_cb_s;\r
+\r
+/**\r
+ * @struct drm_appsession_datatype_s\r
+ * @brief DRM Application Session Datatype structure.\r
+ */\r
+typedef struct {\r
+ int profileID; /** Profile ID */\r
+ int is_progressive_download; /** Is Progressive Download */\r
+ char pProxyAddress[DRM_MAX_LEN_IP_ADDR]; /** Proxy Address */\r
+ drm_content_download_cb_s content_download_cb; /** Content Download callback */\r
+ unsigned int size_pData; /** Size of additional data */\r
+ void *pData; /** Additional Data */\r
+} drm_appsession_datatype_s;\r
+\r
+/**\r
+ * @struct drm_submit_roap_message_info_s\r
+ * @brief DRM Submit Roap Message Info\r
+ */\r
+typedef struct {\r
+ unsigned char* buffer; /** Buffer that contains Trigger of PDU data */\r
+ unsigned int buff_size; /** Buffer size */\r
+ drm_roap_notification_cb_s roap_notify; /** Roap Notification callback */\r
+ drm_roap_init_src_e roap_initiator; /** Roap Initiator */\r
+ drm_appsession_datatype_s app_session_data; /** App Session Data */\r
+} drm_submit_roap_message_info_s;\r
+\r
+/**\r
+ * @struct drm_submit_roap_user_content_info_s\r
+ * @brief DRM Submit Roap User Consent Info\r
+ */\r
+typedef struct {\r
+ drm_bool_type_e bConsent; /** Result of User Consent */\r
+\r
+ drm_bool_type_e bAddToTrustedWhiteList; /** Result of User Consent */\r
+\r
+ unsigned int size_agentdata; /** Size of Agent Data */\r
+\r
+ /** Specifies the pointer points to a ROAP session information that is used by DRM.\r
+ * Must deliver agentData received through Callback completely intact\r
+ */\r
+ void *agentdata;\r
+} drm_submit_roap_user_consent_info_s;\r
+\r
+/**\r
+ * @struct drm_http_user_cancel_info_s\r
+ * @brief DRM HTTP User Cancel Info\r
+ */\r
+typedef struct {\r
+ unsigned int size_app_session_data; /** Size of App Session Data */\r
+ void *app_session_data; /** App Session Data */\r
+} drm_http_user_cancel_info_s;\r
+\r
+/**\r
+ * @struct drm_register_copy_file_info_s\r
+ * @brief DRM Register Copy file Info.\r
+ */\r
+typedef struct {\r
+ char src_file_path[DRM_MAX_LEN_FILEPATH]; /** Source File Path */\r
+ char dest_file_path[DRM_MAX_LEN_FILEPATH]; /** Destination File Path */\r
+} drm_register_copy_file_info_s;\r
+\r
+/**\r
+ * @struct drm_register_move_file_info_s\r
+ * @brief DRM Register Move file Info.\r
+ */\r
+typedef struct {\r
+ char src_file_path[DRM_MAX_LEN_FILEPATH]; /** Source File Path */\r
+ char dest_file_path[DRM_MAX_LEN_FILEPATH]; /** Destination File Path */\r
+} drm_register_move_file_info_s;\r
+\r
+/**\r
+ * @struct drm_register_setas_info_s\r
+ * @brief DRM Register SetAs Info.\r
+ */\r
+typedef struct {\r
+ char file_path[DRM_MAX_LEN_FILEPATH]; /** Source File Path */\r
+ drm_setas_category_e setas_cat; /** SetAs Category */\r
+} drm_register_setas_info_s;\r
+\r
+/**\r
+ * @struct drm_register_setas_resp_data_s\r
+ * @brief DRM Stack Response Data containing the GMT expiry\r
+ * time corresponding to a given content\r
+ */\r
+typedef struct {\r
+ struct tm time_expiry; /** Expiry time*/\r
+} drm_register_setas_resp_data_s;\r
+\r
+/**\r
+ * @struct drm_unregister_setas_info_s\r
+ * @brief DRM Unregister SetAs Info.\r
+ */\r
+typedef struct {\r
+ char file_path[DRM_MAX_LEN_FILEPATH]; /** Source File Path */\r
+ drm_setas_category_e setas_cat; /** SetAs Category */\r
+} drm_unregister_setas_info_s;\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /*__DRM_CLIENT_TYPES_H__ */\r
--- /dev/null
+Name: drm-client
+Summary: DRM client Package
+Version: 0.0.30
+Release: 0
+Group: TO_BE/FILLED_IN
+License: Apache
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(capi-base-common)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: cmake
+
+%description
+DRM client library (Shared Object)
+
+
+%package devel
+Summary: Development files for %{name}
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+%description devel
+Development files for %{name}
+
+%prep
+%setup -q
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix}
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%files
+%defattr(-,root,root,-)
+%{_libdir}/*.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/drm-client/*
+%{_libdir}/*.so
+%{_libdir}/pkgconfig/drm-client.pc
+
+%clean
+rm -rf CMakeCache.txt
+rm -rf CMakeFiles
+rm -rf cmake_install.cmake
+rm -rf Makefile
+rm -rf install_manifest.txt
+rm -rf *.pc
+rm -rf documentation.list
+
+rm -rf libdrm-client.so libdrm-client.so.0 libdrm-client.so.0.0.1
--- /dev/null
+/*\r
+ * drm-client\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+\r
+/**\r
+ * @file drm_client.cpp\r
+ * @brief DRM Client API defintions.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: First version of DRM Client API Definitions.\r
+ */\r
+\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <malloc.h>\r
+\r
+#include "drm_client.h"\r
+#include "drm_client_ipc.h"\r
+#include "drm_client_log.h"\r
+//#include "security-server.h"\r
+\r
+#include <glib.h>\r
+\r
+#ifndef EXPORT_API\r
+#define EXPORT_API __attribute__((visibility("default")))\r
+#endif\r
+\r
+\r
+\r
+/**\r
+ * Private function\r
+ *\r
+ *\r
+ * @param[in] file_path Specifies the pointer points a DRM file path.\r
+ * @return This function returns DRM file type.\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+static drm_file_type_e _drm_client_get_file_type(const char* file_path);\r
+\r
+/**\r
+ * An application can check that a file is DRM file\r
+ * (OMA DRM, PlayReady, DivX etc.)\r
+ *\r
+ * @param[in] file_path Specifies the pointer points a DRM file path.\r
+ * @param[out] is_drm_file DRM_TRUE if the input file is a DRM file\r
+ * else DRM_FALSE.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ *\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_is_drm_file(const char *file_path,\r
+ drm_bool_type_e *is_drm_file)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ int ret_cpy = 0;\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !is_drm_file) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, is_drm_file = %p",\r
+ file_path, is_drm_file);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ file_type = _drm_client_get_file_type(file_path);\r
+\r
+ switch (file_type) {\r
+ case DRM_TYPE_OMA_V1:\r
+ case DRM_TYPE_OMA_V2:\r
+ case DRM_TYPE_PLAYREADY:\r
+ case DRM_TYPE_PLAYREADY_ENVELOPE:\r
+ /* All the above 4 cases correspond to a file being DRM file! */\r
+ DRM_CLIENT_LOG("file_type = %d", file_type);\r
+ *is_drm_file = DRM_TRUE;\r
+ break;\r
+\r
+ case DRM_TYPE_DIVX: {\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* In this case, further analysis of headers required to identify DRM file */\r
+ /* Contact the server to perform operations */\r
+\r
+ /* Store the input parameters to the Request Data structure to be sent to server */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+ DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ file_path, strlen(file_path), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_IS_DRM_FILE;\r
+\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ return DRM_RETURN_COMMUNICATION_ERROR;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ *is_drm_file = DRM_FALSE;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ *is_drm_file = resp_data.fixed_data.bool_val;\r
+ }\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_TYPE_UNDEFINED:\r
+ DRM_CLIENT_LOG("file_type = %d", file_type);\r
+ *is_drm_file = DRM_FALSE;\r
+ break;\r
+\r
+ default:\r
+ DRM_CLIENT_EXCEPTION("Undefined file type!!");\r
+ *is_drm_file = DRM_FALSE;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("Exit:Success!!, is_drm_file = %d",\r
+ *is_drm_file);\r
+ return DRM_RETURN_SUCCESS;\r
+\r
+ErrorExit:\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, is_drm_file = %d",\r
+ *is_drm_file);\r
+ return DRM_RETURN_INTERNAL_ERROR;\r
+\r
+}\r
+\r
+/**\r
+ * An application can get DRM file type of the file that is\r
+ * specified in file_path\r
+ *\r
+ * @param[in] file_path Specifies the pointer points a DRM file path.\r
+ * @param[out] file_type DRM file type.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_file_type(const char *file_path, drm_file_type_e *file_type)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !file_type) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, file_type = %p",\r
+ file_path, file_type);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ *file_type = _drm_client_get_file_type(file_path);\r
+ DRM_CLIENT_LOG("Exit:Success!! file_type = %d", *file_type);\r
+ return DRM_RETURN_SUCCESS;\r
+}\r
+\r
+/**\r
+ * An application can check that a DRM file has valid license or not.\r
+ *\r
+ * @param[in] file_path DRM file path.\r
+ * @param[in] perm_type Enumeration type of permission.\r
+ * @param[out] license_status license status.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_license_status(const char *file_path,\r
+ drm_permission_type_e perm_type,\r
+ drm_license_status_e *license_status)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s, perm_type = %d",\r
+ (!file_path) ? NULL:file_path, perm_type);\r
+\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !license_status) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, license_status = %p",\r
+ file_path, license_status);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Store the input parameters to the Request Data structure to be sent to server */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+ DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ file_path, strlen(file_path), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ req_data.fixed_data.permission_type = perm_type;\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_GET_LICENSE_STATUS;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ *license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ *license_status = resp_data.fixed_data.lic_status;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("*license_status = %d", *license_status);\r
+\r
+ErrorExit:\r
+ if (result != DRM_RETURN_SUCCESS) {\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
+ } else {\r
+ DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
+ }\r
+\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can get DRM Content information for the file\r
+ * specified in file_path.\r
+ *\r
+ * @param[in] file_path DRM file path.\r
+ * @param[out] content_info Content information.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_content_info(const char *file_path,\r
+ drm_content_info_s *content_info)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !content_info) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, content_info = %p",\r
+ file_path, content_info);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* memset the output structure */\r
+ memset(content_info, 0x00, sizeof(drm_content_info_s));\r
+\r
+ /* Store the input parameters to the Request Data structure to be sent to server */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+ DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ file_path, strlen(file_path), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_GET_CONTENT_INFO;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ memset(content_info, 0x00, sizeof(drm_content_info_s));\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ memcpy(content_info, &resp_data.fixed_data.response_data, sizeof(drm_content_info_s));\r
+ }\r
+\r
+ DRM_CLIENT_LOG("content_info->author = %s", content_info->author);\r
+ DRM_CLIENT_LOG("content_info->content_id = %s", content_info->content_id);\r
+ DRM_CLIENT_LOG("content_info->content_url = %s", content_info->content_url);\r
+ DRM_CLIENT_LOG("content_info->copyright = %s", content_info->copyright);\r
+ DRM_CLIENT_LOG("content_info->description = %s", content_info->description);\r
+ DRM_CLIENT_LOG("content_info->icon_uri = %s", content_info->icon_uri);\r
+ DRM_CLIENT_LOG("content_info->info_url = %s", content_info->info_url);\r
+ DRM_CLIENT_LOG("content_info->mime_type = %s", content_info->mime_type);\r
+ DRM_CLIENT_LOG("content_info->rights_url = %s", content_info->rights_url);\r
+ DRM_CLIENT_LOG("content_info->title = %s", content_info->title);\r
+\r
+ErrorExit:\r
+if (result != DRM_RETURN_SUCCESS) {\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
+ } else {\r
+ DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
+ }\r
+\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can get file information of a DRM file.\r
+ *\r
+ * @param[in] file_path DRM file path.\r
+ * @param[out] fileInfo DRM file info.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_file_info(const char *file_path,\r
+ drm_file_info_s *fileInfo)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s", (!file_path) ? NULL:file_path);\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !fileInfo) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, fileInfo = %p",\r
+ file_path, fileInfo);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("file_path = %s", file_path);\r
+\r
+ /* memset the output structure */\r
+ memset(fileInfo, 0x00, sizeof(drm_file_info_s));\r
+\r
+ /* Store the input parameters to the Request Data structure to be sent to server */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+ DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ file_path, strlen(file_path), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_GET_FILE_INFO;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ memset(fileInfo, 0x00, sizeof(drm_file_info_s));\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ memcpy(fileInfo, &resp_data.fixed_data.response_data, sizeof(drm_file_info_s));\r
+ }\r
+\r
+ DRM_CLIENT_LOG("fileInfo->oma_info.method = %d", fileInfo->oma_info.method);\r
+ DRM_CLIENT_LOG("fileInfo->oma_info.version = %d", fileInfo->oma_info.version);\r
+\r
+ErrorExit:\r
+ if (result != DRM_RETURN_SUCCESS) {\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
+ } else {\r
+ DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
+ }\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can get constraints associated with\r
+ * given permission & given file\r
+ *\r
+ * @param[in] file_path DRM file path.\r
+ * @param[in] perm_type Enumeration type of permission.\r
+ * @param[out] constraint_info Constraint info.\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_constraint_info(const char *file_path,\r
+ drm_permission_type_e perm_type,\r
+ drm_constraint_info_s *constraint_info)\r
+{\r
+ DRM_CLIENT_LOG("Enter: file_path = %s, perm_type = %d",\r
+ (!file_path) ? NULL:file_path, perm_type);\r
+\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check input parameters */\r
+ if (!file_path || '\0' == file_path[0] || !constraint_info) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, file_path = %p, constraint_info = %p",\r
+ file_path, constraint_info);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("file_path = %s, perm_type = %d", file_path, perm_type);\r
+\r
+ /* memset the output structure */\r
+ memset(constraint_info, 0x00, sizeof(drm_constraint_info_s));\r
+\r
+ /* Store the input parameters to the Request Data structure to be sent to server */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data, file_path,\r
+ DRM_MAX_LEN_FILEPATH)) >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ file_path, strlen(file_path), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+ req_data.fixed_data.permission_type = perm_type;\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_GET_CONSTRAINT_INFO;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ memset(constraint_info, 0x00, sizeof(drm_constraint_info_s));\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ memcpy(constraint_info, &resp_data.fixed_data.response_data, sizeof(drm_constraint_info_s));\r
+ }\r
+\r
+ErrorExit:\r
+ if (result != DRM_RETURN_SUCCESS) {\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
+ } else {\r
+ DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
+ }\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can check the feasibility of actions to be\r
+ * performed based on the type of DRM file.\r
+ *\r
+ * @param[in] action Action to be taken.\r
+ * @param[in] action_data Data needed to check action\r
+ * allowed operation\r
+ * @param[out] is_allowed DRM_TRUE if action is allowed\r
+ * else DRM_FALSE\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_is_action_allowed(drm_action_type_e action,\r
+ drm_action_allowed_data_s *action_data,\r
+ drm_bool_type_e *is_allowed)\r
+{\r
+ DRM_CLIENT_LOG("Enter: action = %d, action_data = %p", action, action_data);\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check input parameters based on action type */\r
+ switch(action){\r
+ case DRM_IS_FORWARDING_ALLOWED:\r
+ case DRM_HAS_VALID_SETAS_STATUS:\r
+ {\r
+ /* Check input parameters */\r
+ if ((strlen(action_data->file_path)<=0) || !is_allowed) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!, action_data->file_path = %p,"\r
+ " is_allowed = %p", action_data->file_path, is_allowed);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+ DRM_CLIENT_LOG("action_data->file_path = %s, action = %d, data = %d",\r
+ action_data->file_path, action, action_data->data);\r
+\r
+ /* Copy the input parameters to the Request structure */\r
+ req_data.fixed_data.action = action;\r
+ memcpy(req_data.fixed_data.request_data, action_data,\r
+ sizeof(drm_action_allowed_data_s));\r
+ break;\r
+ }\r
+\r
+ case DRM_IS_DEVICE_ACTIVATED:\r
+ case DRM_IS_VALID_SECURE_CLOCK:\r
+ {\r
+ /* Check input parameters */\r
+ if (!is_allowed) {\r
+ DRM_CLIENT_EXCEPTION("Invalid Arg!!,is_allowed = %p",is_allowed);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Copy the input parameters to the Request structure */\r
+ req_data.fixed_data.action = action;\r
+ break;\r
+ }\r
+\r
+ default:\r
+ DRM_CLIENT_EXCEPTION("Invalid action type=%d",action);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_IS_ACTION_ALLOWED;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+ *is_allowed = DRM_FALSE;\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+ *is_allowed = resp_data.fixed_data.bool_val;\r
+ }\r
+\r
+ErrorExit:\r
+ if (result != DRM_RETURN_SUCCESS) {\r
+ DRM_CLIENT_EXCEPTION("Exit:failed!!, result = 0x%x", result);\r
+ } else {\r
+ DRM_CLIENT_LOG("Exit:Success!!, result = 0x%x", result);\r
+ }\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can get the requested data from DRM.\r
+ *\r
+ * @param[in] data_type Data types as per enum drm_data_type_e.\r
+ * @param[in] input Pointer to appropriate structure as per data_type.\r
+ * @param[out] output Output data. Pointer to appropriate structure as\r
+ * per data_type.\r
+ *\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks Please typecast to appropriate data structures\r
+ * as per data types.\r
+ *\r
+ * if data_type = DRM_DATA_TYPE_SECURE_CLOCK\r
+ * then input type: input = NULL\r
+ * and output type: output = pointer to struct\r
+ * drm_secure_clock_data_s\r
+ *\r
+ * if data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG\r
+ * then input type: input = NULL\r
+ * and output type: output = pointer to int\r
+ *\r
+ * if data_type = DRM_DATA_TYPE_TRANSACTION_TRACKING_ID\r
+ * then input type: input = pointer to file path (const char)\r
+ * and output type: output = pointer to struct\r
+ * drm_transaction_id_info_s\r
+ *\r
+ * if data_type = DRM_DATA_TYPE_DIVX_REGISTRATION_CODE\r
+ * then input type: input = NULL\r
+ * and output type: output = pointer to struct drm_code_info_s\r
+ *\r
+ * if data_type = DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE\r
+ * then input type: input = NULL\r
+ * and output type: output = pointer to struct drm_code_info_s\r
+ *\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_get_data(drm_data_type_e data_type, void *input, void *output)\r
+{\r
+ DRM_CLIENT_LOG("Enter: data_type = %d, input = %p, output = %p",\r
+ data_type, input, output);\r
+ /* Local Variables */\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ /* Check Input & Output Parameters and fill the Request data */\r
+ switch (data_type) {\r
+ case DRM_DATA_TYPE_SECURE_CLOCK:\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG:\r
+ case DRM_DATA_TYPE_DIVX_REGISTRATION_CODE:\r
+ case DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE:\r
+ if (!output) {\r
+ DRM_CLIENT_EXCEPTION("Invalid arguments!!, output = %p", output);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+ break;\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_ID: {\r
+ if (!input || ((char*)input)[0] == '\0' || !output) {\r
+ DRM_CLIENT_EXCEPTION("Invalid arguments!!, input = %p, output = %p",\r
+ input, output);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ /* Copy the input parameter to be sent as Request Data */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data,\r
+ (const gchar*) input, DRM_MAX_LEN_FILEPATH))\r
+ >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ (const char*)input, strlen(((const char*)input)), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+ }\r
+ break;\r
+ default:\r
+ DRM_CLIENT_EXCEPTION("Invalid argument, data_type = %d", data_type);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("data_type=%d input=%p output=%p", data_type, input, output);\r
+\r
+ /* Fill other parameters to be sent */\r
+ req_data.fixed_data.data_type = data_type;\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_GET_DATA;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+\r
+ /* Store the response result to the output based on the request data type */\r
+ switch (data_type) {\r
+\r
+ case DRM_DATA_TYPE_SECURE_CLOCK: {\r
+ drm_secure_clock_data_s sec_clk_data = { 0, };\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&sec_clk_data, resp_data.fixed_data.response_data,\r
+ sizeof(drm_secure_clock_data_s));\r
+ DRM_CLIENT_LOG("sec_clk_data.is_secure_clock_set = %d",\r
+ sec_clk_data.is_secure_clock_set);\r
+ DRM_CLIENT_LOG("Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ sec_clk_data.secure_clock.tm_year,\r
+ sec_clk_data.secure_clock.tm_mon,\r
+ sec_clk_data.secure_clock.tm_mday,\r
+ sec_clk_data.secure_clock.tm_hour,\r
+ sec_clk_data.secure_clock.tm_min,\r
+ sec_clk_data.secure_clock.tm_sec);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &sec_clk_data, sizeof(drm_secure_clock_data_s));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG: {\r
+\r
+ int transtrack_flag = 0;\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&transtrack_flag, resp_data.fixed_data.response_data, sizeof(int));\r
+ DRM_CLIENT_LOG("transtrack_flag = %d", transtrack_flag);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &transtrack_flag, sizeof(int));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_ID: {\r
+ drm_transaction_id_info_s transid_info;\r
+ memset(&transid_info,0,sizeof(transid_info));\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&transid_info, resp_data.fixed_data.response_data,\r
+ sizeof(drm_transaction_id_info_s));\r
+ DRM_CLIENT_LOG("transid_info.tr_id = %s", transid_info.tr_id);\r
+ DRM_CLIENT_LOG("transid_info.tr_id_len = %d",\r
+ transid_info.tr_id_len)\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &transid_info, sizeof(drm_transaction_id_info_s));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_DATA_TYPE_DIVX_REGISTRATION_CODE: {\r
+\r
+ drm_code_info_s registration_info;\r
+ memset(®istration_info,0,sizeof(registration_info));\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(®istration_info, resp_data.fixed_data.response_data,\r
+ sizeof(drm_code_info_s));\r
+ DRM_CLIENT_LOG("registration_info.code = %s",\r
+ registration_info.code);\r
+ DRM_CLIENT_LOG("registration_info.code_len = %d",\r
+ registration_info.code_len);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, ®istration_info, sizeof(drm_code_info_s));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE: {\r
+\r
+ drm_code_info_s deregis_info;\r
+ memset(&deregis_info,0,sizeof(deregis_info));\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&deregis_info, resp_data.fixed_data.response_data,\r
+ sizeof(drm_code_info_s));\r
+ DRM_CLIENT_LOG("deregis_info.code = %s",\r
+ deregis_info.code);\r
+ DRM_CLIENT_LOG("deregis_info.code_len = %d",\r
+ deregis_info.code_len);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &deregis_info, sizeof(drm_code_info_s));\r
+\r
+ }\r
+ break;\r
+\r
+ }\r
+\r
+ }\r
+\r
+ /* Success */\r
+ DRM_CLIENT_LOG("Exit:Success:result=0x%x",result);\r
+ return result;\r
+\r
+ErrorExit:\r
+ /* Failure */\r
+ DRM_CLIENT_EXCEPTION("Exit:failed:result=0x%x",result);\r
+ return result;\r
+}\r
+\r
+/**\r
+ * An application can do particular request to DRM.\r
+ *\r
+ * @param[in] request_type Request types as per enum drm_request_type_e.\r
+ * @param[in] input Pointer to appropriate structure as per\r
+ * request_type.\r
+ * @param[out] output Output data. Pointer to appropriate structure as\r
+ * per request_type.\r
+ *\r
+ * @return 0 on success, else a negative error value\r
+ * @retval DRM_RETURN_SUCCESS on success\r
+ * @retval DRM_RETURN_INVALID_ARG if arguments are invalid\r
+ * @retval DRM_RETURN_COMMUNICATION_ERROR if socket error\r
+ * @retval DRM_RETURN_INTERNAL_ERROR if operation error\r
+ * @remarks Please typecast to appropriate data structures\r
+ * as per data types.\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_FILE\r
+ * then input type: input = pointer to const char (file_path)\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_FILE\r
+ * then input type: input = pointer to struct drm_unregister_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES\r
+ * then input type: input = NULL\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_LICENSE\r
+ * then input type: input = pointer to\r
+ * struct drm_register_lic_info_s.\r
+ * and output type: output = pointer to\r
+ * struct drm_register_lic_resp_s.\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL\r
+ * then input type: input = pointer to struct drm_initiator_info_s\r
+ * and output type: output = pointer to struct drm_web_server_resp_data_s\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE\r
+ * then input type: input = pointer to struct drm_submit_roap_message_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT\r
+ * then input type: input = pointer to struct drm_submit_roap_user_consent_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_HTTP_USER_CANCEL\r
+ * then input type: input = pointer to struct drm_http_user_cancel_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_COPY_FILE\r
+ * then input type: input = pointer to struct drm_register_copy_file_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_MOVE_FILE\r
+ * then input type: input = pointer to struct drm_register_copy_file_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_INSERT_EXT_MEMORY\r
+ * then input type: input = NULL\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY\r
+ * then input type: input = NULL\r
+ * and output type: output = NULL\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_REGISTER_SETAS\r
+ * then input type: input = pointer to struct drm_register_setas_info_s\r
+ * and output type: output = pointer to the struct drm_register_setas_resp_data_s\r
+ *\r
+ * if request_type = DRM_REQUEST_TYPE_UNREGISTER_SETAS\r
+ * then input type: input = pointer to struct drm_unregister_setas_info_s\r
+ * and output type: output = NULL\r
+ *\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+EXPORT_API int drm_process_request(drm_request_type_e request_type,\r
+ void *input, void *output)\r
+{\r
+ DRM_CLIENT_LOG("Enter: request_type = %d, input = %p, output = %p",\r
+ request_type, input, output);\r
+ /* Local Variables */\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ drm_request_data_s req_data;\r
+ drm_response_data_s resp_data;\r
+ int ret_comm = 0;\r
+ int ret_cpy = 0;\r
+\r
+ /* memset the structures */\r
+ memset(&req_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&resp_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ DRM_CLIENT_LOG("request_type = %d", request_type);\r
+\r
+ /* Check Input & Output Parameters */\r
+ switch (request_type) {\r
+ case DRM_REQUEST_TYPE_REGISTER_FILE: {\r
+ if (!input || ((char*)input)[0] == '\0') {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+ /* Copy the input to Request Structure */\r
+ if ((ret_cpy = g_strlcpy(req_data.fixed_data.request_data,\r
+ (const gchar*) input, DRM_MAX_LEN_FILEPATH))\r
+ >= DRM_MAX_LEN_FILEPATH) {\r
+ DRM_CLIENT_EXCEPTION("file_path = %s, filepath_len = %d, ret_cpy = %d",\r
+ (const char*)input, strlen(((const char*)input)), ret_cpy);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_FILE: {\r
+ if (!input || ((char*)input)[0] == '\0') {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input, sizeof(drm_unregister_info_s));\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES: {\r
+ DRM_CLIENT_LOG("No parameters required!");\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_LICENSE: {\r
+ if (!input || ((char*)input)[0] == '\0' || !output) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p, output = %p",\r
+ input, output);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_register_lic_info_s));\r
+\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL: {\r
+ if (!input || ((char*)input)[0] == '\0' || !output) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p, output = %p",\r
+ input, output);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ DRM_CLIENT_LOG("initiator_url[%s]", ((drm_initiator_info_s*)input)->initiator_url);\r
+ DRM_CLIENT_LOG("initiator_url_len[%u]", ((drm_initiator_info_s*)input)->initiator_url_len);\r
+ DRM_CLIENT_LOG("operation_callback.callback[%p]", ((drm_initiator_info_s*)input)->operation_callback.callback);\r
+ DRM_CLIENT_LOG("init_type[%d]", ((drm_initiator_info_s*)input)->init_type);\r
+ DRM_CLIENT_LOG("custom_data.app_id[%s]", ((drm_initiator_info_s*)input)->custom_data.app_id);\r
+ DRM_CLIENT_LOG("custom_data.user_guid[%s]", ((drm_initiator_info_s*)input)->custom_data.user_guid);\r
+ DRM_CLIENT_LOG("custom_data.device_id[%s]", ((drm_initiator_info_s*)input)->custom_data.device_id);\r
+ DRM_CLIENT_LOG("custom_data.order_id[%s]", ((drm_initiator_info_s*)input)->custom_data.order_id);\r
+ DRM_CLIENT_LOG("custom_data.service_id[%s]", ((drm_initiator_info_s*)input)->custom_data.service_id);\r
+ DRM_CLIENT_LOG("custom_data.account_id[%s]", ((drm_initiator_info_s*)input)->custom_data.account_id);\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_initiator_info_s));\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE: {\r
+\r
+ if (!input\r
+ || (!((drm_submit_roap_message_info_s*) input)->buffer)\r
+ || (((drm_submit_roap_message_info_s*) input)->buffer[0] == '\0')\r
+ || (((drm_submit_roap_message_info_s*) input)->buff_size == 0)) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_submit_roap_message_info_s));\r
+\r
+ /* Number of additional data items to be sent */\r
+ if ((((drm_submit_roap_message_info_s*) input)->app_session_data.pData)\r
+ && (((drm_submit_roap_message_info_s*) input)->app_session_data.size_pData != 0)) {\r
+ req_data.fixed_data.num_data_items = 2;\r
+ } else {\r
+ req_data.fixed_data.num_data_items = 1;\r
+ }\r
+\r
+ /* Fill details pertaining to additional pointers to be sent */\r
+ req_data.fixed_data.data_length[0] =\r
+ ((drm_submit_roap_message_info_s*) input)->buff_size;\r
+\r
+ /* Allocate memory for data items */\r
+ req_data.data_items[0] = (char*) malloc(\r
+ req_data.fixed_data.data_length[0]);\r
+ if (!req_data.data_items[0]) {\r
+ DRM_CLIENT_EXCEPTION("Memory Allocation Error!, Buf = %p",\r
+ req_data.data_items[0]);\r
+ result = DRM_RETURN_INSUFFICIENT_MEMORY;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the buffer into data items */\r
+ memcpy(req_data.data_items[0],\r
+ ((drm_submit_roap_message_info_s*) input)->buffer,\r
+ ((drm_submit_roap_message_info_s*) input)->buff_size);\r
+\r
+ if (2 == req_data.fixed_data.num_data_items) {\r
+ req_data.fixed_data.data_length[1] =\r
+ ((drm_submit_roap_message_info_s*) input)->app_session_data.size_pData;\r
+\r
+ req_data.data_items[1] = (char*) malloc(\r
+ req_data.fixed_data.data_length[1]);\r
+ if (!req_data.data_items[1]) {\r
+ DRM_CLIENT_EXCEPTION("Memory Allocation Error!, Buf = %p",\r
+ req_data.data_items[1]);\r
+ result = DRM_RETURN_INSUFFICIENT_MEMORY;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the Additional data */\r
+ memcpy( req_data.data_items[1],\r
+ ((drm_submit_roap_message_info_s*) input)->app_session_data.pData,\r
+ ((drm_submit_roap_message_info_s*) input)->app_session_data.size_pData);\r
+ }\r
+ }\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT: {\r
+\r
+ if (!input\r
+ || (!((drm_submit_roap_user_consent_info_s*) input)->agentdata)\r
+ || (((drm_submit_roap_user_consent_info_s*) input)->size_agentdata == 0)) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_submit_roap_user_consent_info_s));\r
+\r
+ /* Number of additional data items to be sent */\r
+ req_data.fixed_data.num_data_items = 1;\r
+\r
+ /* Fill details pertaining to additional pointers to be sent */\r
+ req_data.fixed_data.data_length[0] =\r
+ ((drm_submit_roap_user_consent_info_s*) input)->size_agentdata;\r
+\r
+ /* Allocate memory for data items */\r
+ req_data.data_items[0] = (char*) malloc(\r
+ req_data.fixed_data.data_length[0]);\r
+ if (!req_data.data_items[0]) {\r
+ DRM_CLIENT_EXCEPTION("Memory Allocation Error!, Buf = %p",\r
+ req_data.data_items[0]);\r
+ result = DRM_RETURN_INSUFFICIENT_MEMORY;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the buffer into data items */\r
+ memcpy(req_data.data_items[0],\r
+ ((drm_submit_roap_user_consent_info_s*) input)->agentdata,\r
+ ((drm_submit_roap_user_consent_info_s*) input)->size_agentdata);\r
+ }\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_HTTP_USER_CANCEL: {\r
+\r
+ if (!input\r
+ || (!((drm_http_user_cancel_info_s*) input)->app_session_data)\r
+ || (((drm_http_user_cancel_info_s*) input)->size_app_session_data == 0)) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_http_user_cancel_info_s));\r
+\r
+ /* Number of additional data items to be sent */\r
+ req_data.fixed_data.num_data_items = 1;\r
+\r
+ /* Fill details pertaining to additional pointers to be sent */\r
+ req_data.fixed_data.data_length[0] =\r
+ ((drm_http_user_cancel_info_s*) input)->size_app_session_data;\r
+\r
+ /* Allocate memory for data items */\r
+ req_data.data_items[0] = (char*) malloc(\r
+ req_data.fixed_data.data_length[0]);\r
+ if (!req_data.data_items[0]) {\r
+ DRM_CLIENT_EXCEPTION("Memory Allocation Error!, Buf = %p",\r
+ req_data.data_items[0]);\r
+ result = DRM_RETURN_INSUFFICIENT_MEMORY;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the buffer into data items */\r
+ memcpy(req_data.data_items[0],\r
+ ((drm_http_user_cancel_info_s*) input)->app_session_data,\r
+ ((drm_http_user_cancel_info_s*) input)->size_app_session_data);\r
+\r
+ }\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_COPY_FILE: {\r
+\r
+ if (!input\r
+ || (((drm_register_copy_file_info_s*) input)->src_file_path[0] == '\0')\r
+ || (((drm_register_copy_file_info_s*) input)->dest_file_path[0] == '\0')) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_register_copy_file_info_s));\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_MOVE_FILE: {\r
+\r
+ if (!input\r
+ || (((drm_register_move_file_info_s*) input)->src_file_path[0] == '\0')\r
+ || (((drm_register_move_file_info_s*) input)->dest_file_path[0] == '\0')) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_register_move_file_info_s));\r
+ }\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_INSERT_EXT_MEMORY:\r
+ case DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY:\r
+ DRM_CLIENT_LOG("No parameters to check!!");\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_SETAS: {\r
+\r
+ if (!input\r
+ || (((drm_register_setas_info_s*) input)->file_path[0] == '\0')) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_register_setas_info_s));\r
+ }\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_SETAS: {\r
+\r
+ if (!input\r
+ || (((drm_unregister_setas_info_s*) input)->file_path[0] == '\0')) {\r
+ DRM_CLIENT_EXCEPTION("Invalid argument!!, input = %p", input);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ } else {\r
+ /* Copy the input to Request Structure */\r
+ memcpy(req_data.fixed_data.request_data, input,\r
+ sizeof(drm_unregister_setas_info_s));\r
+ }\r
+ }\r
+ break;\r
+\r
+ default:\r
+ DRM_CLIENT_EXCEPTION("Invalid Argument! request_type = %d",\r
+ request_type);\r
+ return DRM_RETURN_INVALID_ARG;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("input=%p output=%p", input, output);\r
+\r
+ /* Fill other parameters to be sent */\r
+ req_data.fixed_data.request_type = request_type;\r
+\r
+ /* Tell the server which API to be used */\r
+ req_data.fixed_data.api_name = DRM_PROCESS_REQUEST;\r
+\r
+ /* Send Data to DRM server */\r
+ /* Call the Client Communication API */\r
+ if ((ret_comm = drm_client_comm(&req_data, &resp_data)) != 0) {\r
+ DRM_CLIENT_EXCEPTION("drm_client_comm error!!, ret_comm = %d", ret_comm);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+\r
+ /* Copy the response obtained from the server into the output parameter */\r
+ if (resp_data.fixed_data.resp_result != 0) {\r
+ DRM_CLIENT_EXCEPTION("Error returned from server!!, resp_data.fixed_data.resp_result = 0x%x",\r
+ resp_data.fixed_data.resp_result);\r
+\r
+ result = resp_data.fixed_data.resp_result;\r
+ goto ErrorExit;\r
+ } else {\r
+ DRM_CLIENT_LOG("resp_data.fixed_data.resp_result = 0x%x", resp_data.fixed_data.resp_result);\r
+\r
+ /* Store the response result to the output based on the Request type */\r
+ switch (request_type) {\r
+ case DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL: {\r
+\r
+ drm_web_server_resp_data_s ws_resp_data;\r
+ memset(&ws_resp_data,0,sizeof(ws_resp_data));\r
+ /* Copy from response data into local structure */\r
+ memcpy(&ws_resp_data, resp_data.fixed_data.response_data,\r
+ sizeof(drm_web_server_resp_data_s));\r
+ DRM_CLIENT_LOG("ws_resp_data.fixed_data.content_url = %s",\r
+ ws_resp_data.content_url);\r
+ DRM_CLIENT_LOG("ws_resp_data.result_code = 0x%x",\r
+ ws_resp_data.result_code);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &ws_resp_data, sizeof(drm_web_server_resp_data_s));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_LICENSE: {\r
+\r
+ drm_register_lic_resp_s lic_resp;\r
+ memset(&lic_resp,0,sizeof(lic_resp));\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&lic_resp, resp_data.fixed_data.response_data,\r
+ sizeof(drm_register_lic_resp_s));\r
+ DRM_CLIENT_LOG("lic_resp.cid = %s", lic_resp.cid);\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &lic_resp, sizeof(drm_register_lic_resp_s));\r
+\r
+ }\r
+ break;\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_SETAS: {\r
+\r
+ DRM_CLIENT_LOG("Register Setas Successful");\r
+ drm_register_setas_resp_data_s setas_resp = { 0, };\r
+\r
+ /* Copy from response data into local structure */\r
+ memcpy(&setas_resp, resp_data.fixed_data.response_data,\r
+ sizeof(drm_register_setas_resp_data_s));\r
+\r
+ /* Now copy into output parameter */\r
+ memcpy(output, &setas_resp, sizeof(drm_register_setas_resp_data_s));\r
+ }\r
+ break;\r
+ case DRM_REQUEST_TYPE_REGISTER_FILE:\r
+ case DRM_REQUEST_TYPE_UNREGISTER_FILE:\r
+ case DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES:\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE:\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT:\r
+ case DRM_REQUEST_TYPE_HTTP_USER_CANCEL:\r
+ case DRM_REQUEST_TYPE_REGISTER_COPY_FILE:\r
+ case DRM_REQUEST_TYPE_REGISTER_MOVE_FILE:\r
+ case DRM_REQUEST_TYPE_INSERT_EXT_MEMORY:\r
+ case DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY:\r
+ case DRM_REQUEST_TYPE_UNREGISTER_SETAS:\r
+ DRM_CLIENT_LOG("No output parameters to be handled!!");\r
+ break;\r
+\r
+ }\r
+ }\r
+\r
+\r
+ErrorExit:\r
+\r
+ /* Free Request Data memory */\r
+ for (unsigned int i = 0; i < req_data.fixed_data.num_data_items; i++) {\r
+ if (req_data.data_items[i])\r
+ free(req_data.data_items[i]);\r
+ }\r
+\r
+ /* Free Response Data memory */\r
+ for (unsigned int i = 0; i < resp_data.fixed_data.num_data_items; i++) {\r
+ if (resp_data.data_items[i])\r
+ free(resp_data.data_items[i]);\r
+ }\r
+\r
+ DRM_CLIENT_LOG("Result[0x%x]", result);\r
+\r
+ return result;\r
+}\r
+\r
+/**\r
+ * Private function\r
+ *\r
+ *\r
+ * @param[in] file_path Specifies the pointer points a DRM file path.\r
+ * @return This function returns DRM file type.\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+static drm_file_type_e _drm_client_get_file_type(const char* file_path)\r
+{\r
+ char *p = NULL;\r
+ p = (char *) strrchr(file_path, '.');\r
+ if (!p) {\r
+ DRM_CLIENT_EXCEPTION("Invalid file_path!, file_path = %s", file_path);\r
+ return DRM_TYPE_UNDEFINED;\r
+ }\r
+\r
+ DRM_CLIENT_LOG("file_path=[%s], p=[0x%x]", file_path, p);\r
+\r
+ if (p && ((strncasecmp(p, ".dcf", 4) == 0))) {\r
+\r
+ DRM_CLIENT_LOG("OMA DRM V1 File: file_path=%s p=%s", file_path, p);\r
+ return DRM_TYPE_OMA_V1;\r
+\r
+ } else if (p && ((strncasecmp(p, ".odf", 4) == 0)\r
+ || (strncasecmp(p, ".o4a", 4) == 0)\r
+ || (strncasecmp(p, ".o4v", 4) == 0))) {\r
+\r
+ DRM_CLIENT_LOG("OMA DRM V2 File: file_path=%s p=%s", file_path, p);\r
+ return DRM_TYPE_OMA_V2;\r
+\r
+ } else if ((p && ((strncasecmp(p, ".pya", 4) == 0)\r
+ || (strncasecmp(p, ".pyv", 4) == 0)))) {\r
+\r
+ DRM_CLIENT_LOG("PlayReady File: file_path=%s p=%s", file_path, p);\r
+ return DRM_TYPE_PLAYREADY;\r
+\r
+ } else if (p && ((strncasecmp(p, ".eny", 4) == 0)\r
+ || (strncasecmp(p, ".pye", 4) == 0)\r
+ || (strncasecmp(p, ".jue", 4) == 0))) {\r
+\r
+ DRM_CLIENT_LOG("PlayReady Envelope File: file_path=%s p=%s", file_path, p);\r
+ return DRM_TYPE_PLAYREADY_ENVELOPE;\r
+\r
+ } else if (p && ((strncasecmp(p, ".avi", 4) == 0)\r
+ || (strncasecmp(p, ".divx", 5) == 0))) {\r
+\r
+ DRM_CLIENT_LOG("DivX DRM File: file_path=%s p=%s", file_path, p);\r
+ return DRM_TYPE_DIVX;\r
+\r
+ } else {\r
+ DRM_CLIENT_LOG("NON DRM file=%s", file_path);\r
+ return DRM_TYPE_UNDEFINED;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * drm-client\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file drm_client_ipc.cpp\r
+ * @brief DRM Client Inter process communication definitions.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @author Ravi S (ravi.cs@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: DRM Client Inter process communication definitions.\r
+ */\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <unistd.h>\r
+#include <sys/stat.h>\r
+#include <sys/un.h>\r
+#include <sys/types.h>\r
+#include <sys/socket.h>\r
+#include <errno.h>\r
+#include <pthread.h>\r
+#include <signal.h>\r
+\r
+#include "drm_client_ipc.h"\r
+#include "drm_client_log.h"\r
+\r
+\r
+/**\r
+ * @brief Sync socket fd on a thread basis\r
+ */\r
+static __thread int sockfd = -1;\r
+\r
+/**\r
+ * @brief Client info on a thread basis\r
+ */\r
+static __thread drm_client_info_s client_info;\r
+\r
+/**\r
+ * @brief Async socket fd on a process basis\r
+ */\r
+static int async_sockfd = -1;\r
+\r
+/**\r
+ * @brief Storing the registered callbacks\r
+ */\r
+static drm_client_cb_info_s client_cb_info[DRM_MAX_CLIENT_SUPPORTED];\r
+\r
+/**\r
+ * @brief Mutex to serialise async socket per process\r
+ */\r
+pthread_mutex_t async_mutex = PTHREAD_MUTEX_INITIALIZER;\r
+\r
+/**\r
+ * Library load time constructor\r
+ */\r
+void __drm_client_lib_load_constructor (void) __attribute__((constructor));\r
+\r
+/**\r
+ * Library load time constructor\r
+ */\r
+void __drm_client_lib_unload_destructor (void) __attribute__((destructor));\r
+\r
+\r
+/**\r
+ * Constructor for library load time\r
+ *\r
+ *\r
+ * @param void\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+void __drm_client_lib_load_constructor(void)\r
+{\r
+ DRM_CLIENT_LOG("libdrm-client.so.0 loaded!!!");\r
+}\r
+\r
+/**\r
+ * Destructor for library unload time\r
+ *\r
+ *\r
+ * @param void\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+void __drm_client_lib_unload_destructor(void)\r
+{\r
+ DRM_CLIENT_LOG("libdrm-client.so.0 unloaded!!!");\r
+\r
+ /* Close the sockets */\r
+ DRM_CLIENT_LOG("Closing sockets!!");\r
+ if (sockfd >= 0) {\r
+ close(sockfd);\r
+ sockfd = -1;\r
+ }\r
+ if (async_sockfd >= 0) {\r
+ close(async_sockfd);\r
+ async_sockfd = -1;\r
+ }\r
+ DRM_CLIENT_LOG("Closed sockets!!");\r
+}\r
+\r
+/**\r
+ * Private function\r
+ *\r
+ *\r
+ * @param[in] callinfo Callback information\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+void __search_client_info_cb(drm_client_cb_data_s* callinfo)\r
+{\r
+ int i = 0;\r
+ for (i = 0; i < DRM_MAX_CLIENT_SUPPORTED; i++) {\r
+\r
+ DRM_CLIENT_LOG("client_cb_info[i].client_id = %d", client_cb_info[i].client_id);\r
+ DRM_CLIENT_LOG("callinfo->client_id = %d", callinfo->client_id);\r
+\r
+ if (client_cb_info[i].client_id == callinfo->client_id) {\r
+ if (client_cb_info[i].operation_callback.callback) {\r
+\r
+ client_cb_info[i].operation_callback.callback(\r
+ &callinfo->callback_operation_info,\r
+ &callinfo->call_bk_data);\r
+ } else {\r
+ DRM_CLIENT_EXCEPTION("Callback function is NULL here!!!!");\r
+ }\r
+ /* Callback found, return from here */\r
+ return;\r
+ }\r
+ }\r
+\r
+ if (DRM_MAX_CLIENT_SUPPORTED == i) {\r
+ /* Client information for the process not yet stored */\r
+ DRM_CLIENT_EXCEPTION("Callback information not stored!!, i = %d", i);\r
+ return;\r
+ }\r
+}\r
+\r
+/**\r
+ * Private function\r
+ * Thread handler\r
+ *\r
+ * @param[in] thread_arg Thread argument\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+void *client_async_cb_handler(void *thread_arg) {\r
+ drm_client_cb_data_s callinfo;\r
+ int retval = 0, result = 0;\r
+\r
+ /* This Async thread will be running for the entire process alive time\r
+ * to handle all the async related operations sent from the server\r
+ */\r
+ while (1) {\r
+ memset(&callinfo, 0x00, sizeof(drm_client_cb_data_s));\r
+ retval = read(async_sockfd, &callinfo, sizeof(drm_client_cb_data_s));\r
+ if (0 == retval) {\r
+ DRM_CLIENT_LOG("Read returns 0!, retval = %d", retval);\r
+ DRM_CLIENT_LOG("Server end closed!!!!");\r
+ /* Since server end closes\r
+ * async socket creation needs to be done again\r
+ */\r
+ goto ErrorExit;\r
+ } else if (retval < 0 || retval < sizeof(drm_client_cb_data_s)) {\r
+ DRM_CLIENT_EXCEPTION(\r
+ " Async call_back read error!!, retval = %d, error = %s",\r
+ retval, strerror(errno));\r
+ }\r
+\r
+ DRM_CLIENT_LOG(\r
+ "Calling application call back function from client, retval = %d",\r
+ retval);\r
+ /* Search the client cb info from the received client_id and call corresponding handler */\r
+ __search_client_info_cb(&callinfo);\r
+ }\r
+\r
+ErrorExit:\r
+ pthread_mutex_lock(&async_mutex);\r
+ if (async_sockfd >= 0) {\r
+ close(async_sockfd);\r
+ async_sockfd = -1;\r
+ }\r
+ pthread_mutex_unlock(&async_mutex);\r
+ return NULL;\r
+}\r
+\r
+\r
+\r
+/**\r
+ * Private function\r
+ * Create Async socket\r
+ *\r
+ * @param[in] client_in Client request data\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+static int __create_async_socket(drm_request_data_s *client_in)\r
+{\r
+ struct sockaddr_un clientaddr;\r
+ int temp_len_sock = 0;\r
+ int retval = 0;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ pthread_t async_thread = 0;\r
+ int rv = 0;\r
+ /* Create a Async socket */\r
+ if ((async_sockfd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)\r
+ {\r
+ DRM_CLIENT_EXCEPTION("socket error!!, async_sockfd = %d, error = %s",async_sockfd, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG(" async_sockfd created successful , async_sockfd = %d",async_sockfd);\r
+\r
+ temp_len_sock = strlen(DRM_SOCK_PATH);\r
+ memset(&clientaddr, 0x00, sizeof(clientaddr));\r
+ clientaddr.sun_family = AF_UNIX;\r
+ memcpy(clientaddr.sun_path, DRM_SOCK_PATH, temp_len_sock);\r
+ clientaddr.sun_path[temp_len_sock] = '\0';\r
+\r
+ /* connect to the server, on same server SOCK_PATH */\r
+ if ((retval = connect(async_sockfd, (struct sockaddr*) &clientaddr,sizeof(clientaddr))) < 0)\r
+ {\r
+ DRM_CLIENT_EXCEPTION("Async socket connect error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("async_sockfd Connection success retval=%d ", retval);\r
+\r
+ /* Store the necessary information into the client info and send to server */\r
+ client_info.p_id = getpid();\r
+ client_info.thread_id = pthread_self();\r
+ client_info.client_id = client_info.p_id + client_info.thread_id;\r
+ DRM_CLIENT_LOG("Client_id = %d", client_info.client_id);\r
+ client_info.sync_sock_fd = -1;\r
+ client_info.async_sock_fd = async_sockfd;\r
+\r
+ /* Send the server */\r
+ if ((retval = write(async_sockfd, (char*) &client_info,sizeof(client_info))) < 0|| retval < sizeof(client_info))\r
+ {\r
+ DRM_CLIENT_EXCEPTION("Async write error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("async_sockfd Sent info to server");\r
+\r
+ /* Separate thread is created to handle async callback handling */\r
+ rv = pthread_create(&async_thread, NULL, client_async_cb_handler, NULL);\r
+ if (rv != 0) {\r
+ DRM_CLIENT_EXCEPTION("pthread_create creation failed for Async socket");\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("pthread_create success = [%d]", async_thread);\r
+ DRM_CLIENT_LOG("Async socket create success");\r
+ return 1;\r
+\r
+ErrorExit:\r
+ /* Prevent: 35135 [h.shekar]*/\r
+ if(async_sockfd >= 0) {\r
+ close(async_sockfd);\r
+ async_sockfd = -1;\r
+ }\r
+ return 0;\r
+}\r
+\r
+/**\r
+ * Private function\r
+ * Create Sync socket\r
+ *\r
+ * @param[in] client_in Client request data\r
+ * @return void\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+static int __get_socket(drm_request_data_s *client_in)\r
+{\r
+ int fd;\r
+ int temp_len_sock = 0;\r
+ int retval = 0;\r
+ struct sockaddr_un clientaddr;\r
+ static int num_clients = 0;\r
+\r
+ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {\r
+ DRM_CLIENT_EXCEPTION("sockfd socket create error!!, sockfd = %d, error = %s",fd, strerror(errno));\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG(" sockfd created successful , sockfd = %d",fd);\r
+\r
+ /* Set parameters to be used in connect */\r
+ temp_len_sock = strlen(DRM_SOCK_PATH);\r
+ memset(&clientaddr, 0x00, sizeof(clientaddr));\r
+ clientaddr.sun_family = AF_UNIX;\r
+ memcpy(clientaddr.sun_path, DRM_SOCK_PATH, temp_len_sock);\r
+ clientaddr.sun_path[temp_len_sock] = '\0';\r
+\r
+ if ((retval = connect(fd, (struct sockaddr*)&clientaddr,sizeof(clientaddr))) < 0)\r
+ {\r
+ DRM_CLIENT_EXCEPTION("connect error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("sync socket is created sockfd = %d retval = %d",fd,retval);\r
+\r
+ client_info.p_id = getpid();\r
+ client_info.thread_id = pthread_self();\r
+ client_info.client_id = client_info.p_id + client_info.thread_id;\r
+ DRM_CLIENT_LOG("Client_id = %d", client_info.client_id);\r
+ client_info.sync_sock_fd = fd;\r
+ client_info.async_sock_fd = async_sockfd;\r
+\r
+ DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",fd,sizeof(client_info));\r
+\r
+ DRM_CLIENT_LOG("client_info.client_id before send = %d", client_info.client_id);\r
+ if ((retval = write(fd, (char*) &client_info,sizeof(client_info))) < 0 || retval < sizeof(client_info))\r
+ {\r
+ DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",fd,retval);\r
+ return fd;\r
+\r
+ErrorExit:\r
+\r
+ /* Prevent: 35135 [h.shekar]*/\r
+ if (fd >= 0)\r
+ close(fd);\r
+\r
+ return -1;\r
+}\r
+\r
+/**\r
+ * This API is used to send a request to the Server to call corresponding API\r
+ *\r
+ * @param[in] client_in Carries the input parameters of Client API to Server\r
+ * @param[out] server_out Carries the output parameters of Client API from Server\r
+ * @return 0 on success & other values on failure\r
+ * @remarks\r
+ * @see\r
+ * @since 0.1\r
+ */\r
+int drm_client_comm(drm_request_data_s *client_in, drm_response_data_s *server_out)\r
+{\r
+ int retval = 0;\r
+ drm_request_data_s send_data;\r
+ drm_response_data_s recv_data;\r
+ drm_result_e result = DRM_RETURN_SUCCESS;\r
+ unsigned int offset = 0;\r
+ unsigned int bytes_write = DRM_MAX_CHUNK_SIZE;\r
+ unsigned int bytes_read = DRM_MAX_CHUNK_SIZE;\r
+\r
+ /* memset the structures */\r
+ memset(&send_data, 0x0, sizeof(drm_request_data_s));\r
+ memset(&recv_data, 0x0, sizeof(drm_response_data_s));\r
+\r
+ DRM_CLIENT_LOG("drm_client_comm in");\r
+\r
+ /* Create Async socket if not created already for this process */\r
+ pthread_mutex_lock(&async_mutex);\r
+ if (-1 == async_sockfd) {\r
+ DRM_CLIENT_LOG("Creating async socket for current process!!");\r
+ if(!__create_async_socket(client_in))\r
+ {\r
+ DRM_CLIENT_EXCEPTION("__create_async_socket returned error");\r
+ pthread_mutex_unlock(&async_mutex);\r
+ goto ErrorExit;\r
+ }\r
+ }\r
+ pthread_mutex_unlock(&async_mutex);\r
+\r
+ /* Create Sync Socket on a per thread basis */\r
+ if (-1 == sockfd) {\r
+ DRM_CLIENT_LOG("initial sockfd = %d", sockfd);\r
+ sockfd = __get_socket(client_in);\r
+ DRM_CLIENT_LOG("after get_socket sockfd = %d", sockfd);\r
+ if (sockfd < 0) {\r
+ DRM_CLIENT_EXCEPTION("get_socket failed sockfd = %d", sockfd);\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ }\r
+\r
+ /* Store the callback on a thread basis to be handled for each client */\r
+ DRM_CLIENT_LOG("Callback = %p", ((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback.callback);\r
+ DRM_CLIENT_LOG("Client id = %d", client_info.client_id);\r
+\r
+ if (((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback.callback) {\r
+ /* Callback present, store if not yet stored\r
+ * Loop through the list checking for client id if stored */\r
+ int loop = 0;\r
+ for (; loop < DRM_MAX_CLIENT_SUPPORTED; loop++) {\r
+ if (client_cb_info[loop].client_id == client_info.client_id) {\r
+ DRM_CLIENT_LOG("Callback info already stored!!, client_id[%d] = %d",\r
+ loop, client_cb_info[loop].client_id);\r
+ break;\r
+ } else if (client_cb_info[loop].client_id == 0) {\r
+ DRM_CLIENT_LOG("No entry for cb yet, loop = %d", loop);\r
+ DRM_CLIENT_LOG("Empty structure, storing client callback here, id = %d", client_info.client_id);\r
+ client_cb_info[loop].client_id = client_info.client_id;\r
+ memcpy(&client_cb_info[loop].operation_callback,\r
+ &(((drm_initiator_info_s*) (client_in->fixed_data.request_data))->operation_callback),\r
+ sizeof(drm_operation_cb_s));\r
+ break;\r
+ }\r
+ }\r
+ if (DRM_MAX_CLIENT_SUPPORTED == loop) {\r
+ DRM_CLIENT_LOG("loop = %d, Maximum clients reached!!!", loop);\r
+ }\r
+ }\r
+\r
+ /* Copy the data received from the client into local */\r
+ memcpy(&send_data, client_in, sizeof(drm_request_data_s));\r
+ /* First write the static structures */\r
+ DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,sizeof(drm_req_fixed_data_s));\r
+ if ((retval = write(sockfd, (char*) &send_data.fixed_data,sizeof(drm_req_fixed_data_s))) < 0|| retval < sizeof(drm_req_fixed_data_s))\r
+ {\r
+ DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",sockfd,retval);\r
+\r
+ /* Now send the additional data items if any */\r
+ if (send_data.fixed_data.num_data_items > 0) {\r
+ for (unsigned int i = 0; i < send_data.fixed_data.num_data_items; i++)\r
+ {\r
+ if (send_data.fixed_data.data_length[i] > DRM_MAX_CHUNK_SIZE)\r
+ {\r
+ while (bytes_write > 0)\r
+ {\r
+ DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,bytes_write);\r
+ if ((retval = write(sockfd,(void*)(send_data.data_items[i] + offset), bytes_write)) < 0 || retval < bytes_write)\r
+ {\r
+ DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",sockfd,retval);\r
+ offset += DRM_MAX_CHUNK_SIZE;\r
+ bytes_write = (int)(send_data.fixed_data.data_length[i] - offset) > (int)DRM_MAX_CHUNK_SIZE ? DRM_MAX_CHUNK_SIZE :(int)(send_data.fixed_data.data_length[i] - offset);\r
+ DRM_CLIENT_LOG("offset = %d, bytes_write = %d", offset, bytes_write);\r
+ }\r
+ bytes_write = DRM_MAX_CHUNK_SIZE;\r
+ }\r
+ else\r
+ {\r
+ DRM_CLIENT_LOG("Writing socket sockfd = %d size=%d",sockfd,send_data.fixed_data.data_length[i]);\r
+ if ((retval = write(sockfd, send_data.data_items[i], send_data.fixed_data.data_length[i])) < 0 || retval < send_data.fixed_data.data_length[i])\r
+ {\r
+ DRM_CLIENT_EXCEPTION("write error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Written socket sockfd = %d retval=%d",sockfd,retval);\r
+ }\r
+ }\r
+ }\r
+ /* Set offset to be used again */\r
+ offset = 0;\r
+ /* Read the fixed data into the receive structure */\r
+ DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,sizeof(drm_resp_fixed_data_s));\r
+ if ((retval = read(sockfd, (char*) &recv_data.fixed_data,sizeof(drm_resp_fixed_data_s))) < 0 || retval < sizeof(drm_resp_fixed_data_s))\r
+ {\r
+ DRM_CLIENT_EXCEPTION("read error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ result = DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
+ if (recv_data.fixed_data.num_data_items > 0) {\r
+ for (unsigned int loop = 0; loop < recv_data.fixed_data.num_data_items; loop++)\r
+ {\r
+ /* Allocate memory for the data items */\r
+ recv_data.data_items[loop] = (char*) malloc(recv_data.fixed_data.data_length[loop]);\r
+ if (!recv_data.data_items[loop]) {\r
+ DRM_CLIENT_EXCEPTION("Memory Allocation Error!, buf = %p",recv_data.data_items[loop]);\r
+ recv_data.fixed_data.resp_result=DRM_RETURN_INSUFFICIENT_MEMORY;\r
+ goto ErrorExit;\r
+ }\r
+ if (recv_data.fixed_data.data_length[loop] > DRM_MAX_CHUNK_SIZE)\r
+ {\r
+ while (bytes_read > 0)\r
+ {\r
+ DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,bytes_read);\r
+ if ((retval = read(sockfd,(void*)(recv_data.data_items[loop] + offset),bytes_read)) < 0 || retval < bytes_read)\r
+ {\r
+ DRM_CLIENT_EXCEPTION("Read error!!, retval = %d, error = %s", retval,strerror(errno));\r
+ recv_data.fixed_data.resp_result=DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
+ offset += DRM_MAX_CHUNK_SIZE;\r
+ bytes_read = (int)(recv_data.fixed_data.data_length[loop] - offset) > (int) DRM_MAX_CHUNK_SIZE ? DRM_MAX_CHUNK_SIZE :(int)(recv_data.fixed_data.data_length[loop] - offset);\r
+ DRM_CLIENT_LOG("offset = %d, bytes_read = %d", offset, bytes_read);\r
+ }\r
+ bytes_read = DRM_MAX_CHUNK_SIZE;\r
+ }\r
+ else\r
+ {\r
+ DRM_CLIENT_LOG("Reading socket sockfd = %d size=%d",sockfd,recv_data.fixed_data.data_length[loop]);\r
+ if ((retval = read(sockfd,recv_data.data_items[loop],recv_data.fixed_data.data_length[loop])) < 0 || retval < recv_data.fixed_data.data_length[loop])\r
+ {\r
+ DRM_CLIENT_EXCEPTION("Read error!!, retval = %d, error = %s",retval, strerror(errno));\r
+ recv_data.fixed_data.resp_result=DRM_RETURN_COMMUNICATION_ERROR;\r
+ goto ErrorExit;\r
+ }\r
+ DRM_CLIENT_LOG("Read socket sockfd = %d retval=%d",sockfd,retval);\r
+ }\r
+ }\r
+ }\r
+ /* Copy the data from the server back to the client into the output parameter */\r
+ memcpy(server_out, &recv_data, sizeof(drm_response_data_s));\r
+ DRM_CLIENT_LOG("drm_client_comm success!!!, result = %d", result);\r
+ return result;\r
+\r
+ ErrorExit:\r
+ if (sockfd >= 0) {\r
+ close(sockfd);\r
+ sockfd = -1;\r
+ }\r
+ return result;\r
+}\r
--- /dev/null
+CXX ?= g++\r
+TARGETS = test_drm_client\r
+PKGS = drm-client\r
+LDFLAGS = `pkg-config --libs $(PKGS)`\r
+CFLAGS = -I. `pkg-config --cflags $(PKGS)`\r
+CFLAGS += -Wall -Wunused-function -Wunreachable-code -ggdb3 -fno-omit-frame-pointer -rdynamic -fno-optimize-sibling-calls -fstack-protector-all\r
+\r
+all: $(TARGETS)\r
+\r
+$(TARGETS): %: %.cpp\r
+ $(CXX) -o $@ $< $(CFLAGS) $(LDFLAGS)\r
+\r
+clean:\r
+ rm -f $(TARGETS)
\ No newline at end of file
--- /dev/null
+/*\r
+ * drm-client test utility\r
+ *\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>\r
+ * Mahendra Kumar Prajapat <mahendra.p@samsung.com>\r
+ * Harsha Shekar <h.shekar@samsung.com>\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ */\r
+\r
+/**\r
+ * @file test_drm_client.cpp\r
+ * @brief Test case implementation specific to DRM Client APIs.\r
+ * @author Mahendra Kumar Prajapat (mahendra.p@samsung.com)\r
+ * @author Harsha Shekar (h.shekar@samsung.com)\r
+ * @version 0.1\r
+ * @history 0.1: First version of DRM Client test utility.\r
+ */\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+#include <stdlib.h>\r
+#include <memory.h>\r
+#include <stdarg.h>\r
+#include <sys/time.h>\r
+#include <sys/types.h>\r
+#include <time.h>\r
+#include <fcntl.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+#include <sys/syscall.h>\r
+#include <linux/unistd.h>\r
+#include <unistd.h>\r
+#include <dirent.h>\r
+#include <pthread.h>\r
+#include <assert.h>\r
+\r
+#include "drm_client.h"\r
+\r
+#define drm_client_tid() (long int)syscall(__NR_gettid)\r
+#define DRM_CLIENT_TEST_FILENAME(X) (strrchr((char*)(X), '/') ? (char*)(strrchr((char*)(X), '/') + 1) : ((char*)(X)) )\r
+\r
+#define DRM_CLIENT_TEST_LOG(FMT, ARG...) do{\\r
+ fprintf(stderr,"[PID=%ld]:[TID=%ld]:[%s:%s:%d]:",(long int)getpid(),drm_client_tid(),DRM_CLIENT_TEST_FILENAME(__FILE__),__func__,__LINE__); \\r
+ fprintf(stderr,FMT,##ARG); \\r
+ fprintf(stderr,"\n"); \\r
+ } while(0);\r
+\r
+#define DRM_CLIENT_TEST_EXCEPTION(FMT, ARG...) do{\\r
+ fprintf(stderr,"[PID=%ld]:[TID=%ld]:[%s:%s:%d]:",(long int)getpid(),drm_client_tid(),DRM_CLIENT_TEST_FILENAME(__FILE__),__func__,__LINE__); \\r
+ fprintf(stderr,"[ERROR]"FMT,##ARG); \\r
+ fprintf(stderr,"\n"); \\r
+ } while(0);\r
+\r
+enum {\r
+ DRM_CLIENT_TEST_NONE,\r
+ DRM_CLIENT_TEST_is_drm_file,\r
+ DRM_CLIENT_TEST_get_file_type,\r
+ DRM_CLIENT_TEST_get_license_status,\r
+ DRM_CLIENT_TEST_get_content_info,\r
+ DRM_CLIENT_TEST_get_file_info,\r
+ DRM_CLIENT_TEST_get_constraint_info,\r
+ DRM_CLIENT_TEST_is_action_allowed,\r
+ DRM_CLIENT_TEST_get_data,\r
+ DRM_CLIENT_TEST_process_request,\r
+ DRM_CLIENT_TEST_print_return_code_values,\r
+ DRM_CLIENT_TEST_MAX\r
+};\r
+\r
+void test_operation_cb(drm_user_operation_info_s *operation_info,\r
+ void *output_data)\r
+{\r
+ DRM_CLIENT_TEST_LOG("Callback HIT");\r
+}\r
+\r
+int test_case(int option)\r
+{\r
+ DRM_CLIENT_TEST_LOG("option=[%d]", option);\r
+\r
+ switch (option) {\r
+ case DRM_CLIENT_TEST_NONE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_NONE start");\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_NONE completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_is_drm_file:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_is_drm_file start");\r
+\r
+ char file_path[512] = {0,};\r
+ drm_bool_type_e is_drm_file = DRM_UNKNOWN;\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path = %s",file_path);\r
+\r
+ ret = drm_is_drm_file(file_path,&is_drm_file);\r
+ DRM_CLIENT_TEST_LOG("file_path = %s ret=%d is_drm_file=%d",file_path,ret,is_drm_file);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_drm_file){\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE",file_path);\r
+ }else{\r
+ DRM_CLIENT_TEST_LOG("file_path = %s NOT a DRM FILE",file_path);\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_is_drm_file completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_file_type:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_file_type start");\r
+ char file_path[512] = {0,};\r
+ drm_file_type_e file_type = DRM_TYPE_UNDEFINED;\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path = %s",file_path);\r
+\r
+ ret = drm_get_file_type(file_path,&file_type);\r
+ DRM_CLIENT_TEST_LOG("file_path = %s ret=%d file_type=%d",file_path,ret,file_type);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = %d",file_path,file_type);\r
+ switch(file_type){\r
+ case DRM_TYPE_OMA_V1: /**< OMA DRM v1 file */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = DRM_TYPE_OMA_V1 ",file_path);\r
+ break;\r
+\r
+ case DRM_TYPE_OMA_V2: /**< OMA DRM v2 file */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = DRM_TYPE_OMA_V2 ",file_path);\r
+ break;\r
+\r
+ case DRM_TYPE_PLAYREADY: /**< PlayReady file */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = DRM_TYPE_PLAYREADY ",file_path);\r
+ break;\r
+\r
+ case DRM_TYPE_PLAYREADY_ENVELOPE: /**< PlayReady Envelope file */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = DRM_TYPE_PLAYREADY_ENVELOPE ",file_path);\r
+ break;\r
+\r
+ case DRM_TYPE_DIVX: /**< DivX file */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM FILE type = DRM_TYPE_DIVX ",file_path);\r
+ break;\r
+\r
+ default:\r
+ DRM_CLIENT_TEST_LOG("file_path = %s Unkown DRM FILE type = %d",file_path,file_type);\r
+ }\r
+\r
+ }else{\r
+ DRM_CLIENT_TEST_LOG("file_path = %s Unknown DRM type",file_path);\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_file_type completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_license_status:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_license_status start");\r
+\r
+ char file_path[512] = {0,};\r
+ drm_permission_type_e perm_type;\r
+ drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter permission type");\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_NONE",DRM_PERMISSION_TYPE_NONE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_ANY",DRM_PERMISSION_TYPE_ANY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_PLAY",DRM_PERMISSION_TYPE_PLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_COLLABORATIVE_PLAY",DRM_PERMISSION_TYPE_COLLABORATIVE_PLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_DISPLAY",DRM_PERMISSION_TYPE_DISPLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXECUTE",DRM_PERMISSION_TYPE_EXECUTE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_PRINT",DRM_PERMISSION_TYPE_PRINT);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXPORT_COPY",DRM_PERMISSION_TYPE_EXPORT_COPY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXPORT_MOVE",DRM_PERMISSION_TYPE_EXPORT_MOVE);\r
+ scanf("%d", (int*)&perm_type);\r
+ DRM_CLIENT_TEST_LOG("perm_type = %d file_path=%s",perm_type,file_path);\r
+\r
+ ret = drm_get_license_status(file_path,perm_type,&license_status);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("drm_get_license_status success:license_status=%d",license_status);\r
+ switch(license_status){\r
+ case DRM_LICENSE_STATUS_VALID: /**< Valid License */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM_LICENSE_STATUS_VALID",file_path);\r
+ break;\r
+\r
+ case DRM_LICENSE_STATUS_FUTURE_USE: /**< License for future use */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM_LICENSE_STATUS_FUTURE_USE",file_path);\r
+ break;\r
+ case DRM_LICENSE_STATUS_EXPIRED: /**< Expired License */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM_LICENSE_STATUS_EXPIRED",file_path);\r
+ break;\r
+\r
+ case DRM_LICENSE_STATUS_NO_LICENSE: /**< No License */\r
+ DRM_CLIENT_TEST_LOG("file_path = %s DRM_LICENSE_STATUS_NO_LICENSE",file_path);\r
+ break;\r
+\r
+ default:\r
+ DRM_CLIENT_TEST_EXCEPTION("file_path = %s Unknown License Status=%d",file_path,license_status);\r
+ }\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("drm_get_license_status failed");\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_license_status completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_content_info:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_content_info start");\r
+ char file_path[512] = {0,};\r
+ drm_content_info_s content_info;\r
+ memset(&content_info,0x0,sizeof(drm_content_info_s));\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",file_path);\r
+\r
+ ret = drm_get_content_info(file_path,&content_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("drm_get_content_info success");\r
+ if('\0' != content_info.author[0]) DRM_CLIENT_TEST_LOG("author=%s",content_info.author);\r
+ if('\0' != content_info.copyright[0]) DRM_CLIENT_TEST_LOG("copyright=%s",content_info.copyright);\r
+ if('\0' != content_info.description[0]) DRM_CLIENT_TEST_LOG("description=%s",content_info.description);\r
+ if('\0' != content_info.icon_uri[0]) DRM_CLIENT_TEST_LOG("icon_uri=%s",content_info.icon_uri);\r
+ if('\0' != content_info.info_url[0]) DRM_CLIENT_TEST_LOG("info_url=%s",content_info.info_url);\r
+ if('\0' != content_info.content_url[0]) DRM_CLIENT_TEST_LOG("content_url=%s",content_info.content_url);\r
+ if('\0' != content_info.rights_url[0]) DRM_CLIENT_TEST_LOG("rights_url=%s",content_info.rights_url);\r
+ if('\0' != content_info.title[0]) DRM_CLIENT_TEST_LOG("title=%s",content_info.title);\r
+ if('\0' != content_info.mime_type[0]) DRM_CLIENT_TEST_LOG("mime_type=%s",content_info.mime_type);\r
+ if('\0' != content_info.content_id[0]) DRM_CLIENT_TEST_LOG("content_id=%s",content_info.content_id);\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("drm_get_content_info failed");\r
+ }\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_content_info completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_file_info:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_file_info start");\r
+ char file_path[512] = {0,};\r
+ drm_file_info_s fileInfo;\r
+ memset(&fileInfo,0x0,sizeof(drm_file_info_s));\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",file_path);\r
+\r
+ ret = drm_get_file_info(file_path,&fileInfo);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("drm_get_file_info success");\r
+\r
+ if(DRM_METHOD_TYPE_UNDEFINED != fileInfo.oma_info.method){\r
+ DRM_CLIENT_TEST_LOG("OMA DRM File");\r
+ DRM_CLIENT_TEST_LOG("method=%d",fileInfo.oma_info.method);\r
+ DRM_CLIENT_TEST_LOG("version=%d",fileInfo.oma_info.version);\r
+ }else if(0 != fileInfo.pr_env_info.org_file_size){\r
+ DRM_CLIENT_TEST_LOG("PlayReady Envelope File");\r
+ DRM_CLIENT_TEST_LOG("org_file_name=%s",fileInfo.pr_env_info.org_file_name);\r
+ DRM_CLIENT_TEST_LOG("org_file_size=%d",fileInfo.pr_env_info.org_file_size);\r
+ }else{\r
+ DRM_CLIENT_TEST_LOG("Other DRM File=%s",file_path);\r
+ }\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("drm_get_file_info failed");\r
+ }\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_file_info completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_constraint_info:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_constraint_info start");\r
+ char file_path[512] = {0,};\r
+ drm_constraint_info_s constraint_info;\r
+ drm_permission_type_e perm_type;\r
+ memset(&constraint_info,0x0,sizeof(drm_constraint_info_s));\r
+ int ret = -1;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter permission type");\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_NONE",DRM_PERMISSION_TYPE_NONE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_ANY",DRM_PERMISSION_TYPE_ANY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_PLAY",DRM_PERMISSION_TYPE_PLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_COLLABORATIVE_PLAY",DRM_PERMISSION_TYPE_COLLABORATIVE_PLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_DISPLAY",DRM_PERMISSION_TYPE_DISPLAY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXECUTE",DRM_PERMISSION_TYPE_EXECUTE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_PRINT",DRM_PERMISSION_TYPE_PRINT);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXPORT_COPY",DRM_PERMISSION_TYPE_EXPORT_COPY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_PERMISSION_TYPE_EXPORT_MOVE",DRM_PERMISSION_TYPE_EXPORT_MOVE);\r
+ scanf("%d", (int*)&perm_type);\r
+ DRM_CLIENT_TEST_LOG("perm_type = %d file_path=%s",perm_type,file_path);\r
+\r
+ ret = drm_get_constraint_info(file_path,perm_type,&constraint_info);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("drm_get_constraint_info success");\r
+\r
+ if(constraint_info.const_type.is_unlimited){\r
+ DRM_CLIENT_TEST_LOG("Unlimited:for permission=%d",perm_type);\r
+ break;\r
+ }\r
+\r
+ if(constraint_info.const_type.is_accumulated){\r
+ DRM_CLIENT_TEST_LOG("Accumulated Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("accumulated_original_seconds=%d",\r
+ constraint_info.accumulated_original_seconds);\r
+ DRM_CLIENT_TEST_LOG("accumulated_remaining_seconds=%d",\r
+ constraint_info.accumulated_remaining_seconds);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_count){\r
+ DRM_CLIENT_TEST_LOG("Count Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("original_count=%d",\r
+ constraint_info.original_count);\r
+ DRM_CLIENT_TEST_LOG("remaining_count=%d",\r
+ constraint_info.remaining_count);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_datetime){\r
+ DRM_CLIENT_TEST_LOG("DATETIME Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("start_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.start_time.tm_year,\r
+ constraint_info.start_time.tm_mon,\r
+ constraint_info.start_time.tm_mday,\r
+ constraint_info.start_time.tm_hour,\r
+ constraint_info.start_time.tm_min,\r
+ constraint_info.start_time.tm_sec);\r
+\r
+ DRM_CLIENT_TEST_LOG("end_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.end_time.tm_year,\r
+ constraint_info.end_time.tm_mon,\r
+ constraint_info.end_time.tm_mday,\r
+ constraint_info.end_time.tm_hour,\r
+ constraint_info.end_time.tm_min,\r
+ constraint_info.end_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_individual){\r
+ DRM_CLIENT_TEST_LOG("INDIVIDUAL Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("individual_identity_type=%d "\r
+ "individual_id=%s",\r
+ constraint_info.individual_identity_type,\r
+ constraint_info.individual_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_interval){\r
+ DRM_CLIENT_TEST_LOG("INTERVAL Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("interval_time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ constraint_info.interval_time.tm_year,\r
+ constraint_info.interval_time.tm_mon,\r
+ constraint_info.interval_time.tm_mday,\r
+ constraint_info.interval_time.tm_hour,\r
+ constraint_info.interval_time.tm_min,\r
+ constraint_info.interval_time.tm_sec);\r
+ }\r
+\r
+ if(constraint_info.const_type.is_system){\r
+ DRM_CLIENT_TEST_LOG("SYSTEM Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("system_identity_type=%d "\r
+ "system_id=%s",\r
+ constraint_info.system_identity_type,\r
+ constraint_info.system_id);\r
+\r
+ }\r
+\r
+ if(constraint_info.const_type.is_timedcount){\r
+ DRM_CLIENT_TEST_LOG("TIMED-COUNT Constraint is present");\r
+ DRM_CLIENT_TEST_LOG("timed_original_count=%d",\r
+ constraint_info.timed_original_count);\r
+\r
+ DRM_CLIENT_TEST_LOG("timed_remaining_count=%d",\r
+ constraint_info.timed_remaining_count);\r
+\r
+ DRM_CLIENT_TEST_LOG("timed_count_timer=%d",\r
+ constraint_info.timed_count_timer);\r
+ }\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("drm_get_constraint_info failed");\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_constraint_info completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_is_action_allowed:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_is_action_allowed start");\r
+\r
+ drm_bool_type_e is_allowed = DRM_UNKNOWN;\r
+ drm_action_type_e action = DRM_ACTION_UNDEFINED;\r
+ drm_action_allowed_data_s action_data;\r
+ int ret = -1;\r
+ memset(&action_data,0x0,sizeof(drm_action_allowed_data_s));\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", action_data.file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",action_data.file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter the action to be performed!");\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_ACTION_UNDEFINED",\r
+ DRM_ACTION_UNDEFINED);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_IS_FORWARDING_ALLOWED",\r
+ DRM_IS_FORWARDING_ALLOWED);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_HAS_VALID_SETAS_STATUS",\r
+ DRM_HAS_VALID_SETAS_STATUS);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_IS_DEVICE_ACTIVATED",\r
+ DRM_IS_DEVICE_ACTIVATED);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_IS_VALID_SECURE_CLOCK",\r
+ DRM_IS_VALID_SECURE_CLOCK);\r
+\r
+ scanf("%d", (int*)&action);\r
+\r
+ DRM_CLIENT_TEST_LOG("Action entered = %d", action);\r
+\r
+ ret = drm_is_action_allowed(action,&action_data,&is_allowed);\r
+ if(DRM_RETURN_SUCCESS == ret && DRM_TRUE == is_allowed){\r
+ DRM_CLIENT_TEST_LOG("Action=%d is allowed",action);\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("drm_is_action_allowed failed");\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_is_action_allowed completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_get_data:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_data start");\r
+ char file_path[512] = {0,};\r
+ int ret = -1;\r
+ drm_data_type_e data_type = DRM_DATA_TYPE_NONE;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter the data type to be received");\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_DATA_TYPE_SECURE_CLOCK",\r
+ DRM_DATA_TYPE_SECURE_CLOCK);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG",\r
+ DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_DATA_TYPE_TRANSACTION_TRACKING_ID",\r
+ DRM_DATA_TYPE_TRANSACTION_TRACKING_ID);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_DATA_TYPE_DIVX_REGISTRATION_CODE",\r
+ DRM_DATA_TYPE_DIVX_REGISTRATION_CODE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE",\r
+ DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE);\r
+\r
+ scanf("%d", (int*)&data_type);\r
+ DRM_CLIENT_TEST_LOG("Data type received=%d",data_type);\r
+\r
+ if(DRM_DATA_TYPE_TRANSACTION_TRACKING_ID == data_type){\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",file_path);\r
+ }\r
+\r
+ switch(data_type){\r
+ case DRM_DATA_TYPE_SECURE_CLOCK:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Get DRM_DATA_TYPE_SECURE_CLOCK");\r
+ drm_secure_clock_data_s secure_clock_info={0};\r
+ ret = drm_get_data(data_type,NULL,(void*)&secure_clock_info);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret\r
+ && 1 == secure_clock_info.is_secure_clock_set){\r
+ DRM_CLIENT_TEST_LOG("Secure Clock is SET:ret=0x%x",ret);\r
+ DRM_CLIENT_TEST_LOG("Secure Time:"\r
+ "Year=%d,Month=%d,Day=%d,Hour=%d, minute=%d, Second=%d",\r
+ secure_clock_info.secure_clock.tm_year,\r
+ secure_clock_info.secure_clock.tm_mon,\r
+ secure_clock_info.secure_clock.tm_mday,\r
+ secure_clock_info.secure_clock.tm_hour,\r
+ secure_clock_info.secure_clock.tm_min,\r
+ secure_clock_info.secure_clock.tm_sec);\r
+ }else if(DRM_RETURN_SUCCESS == ret\r
+ && 0 == secure_clock_info.is_secure_clock_set){\r
+ DRM_CLIENT_TEST_LOG("Secure Clock is NOT SET:ret=0x%x",ret);\r
+ }else{\r
+ DRM_CLIENT_TEST_LOG("Secure Clock Retrieval FAILED:ret=0x%x",ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Get DRM_DATA_TYPE_TRANSACTION_TRACKING_FLAG");\r
+\r
+ int transtrk_flag = 0;\r
+ ret = drm_get_data(data_type, NULL, (void*)&transtrk_flag);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("transtrk_flag = %d", transtrk_flag);\r
+ } else {\r
+ DRM_CLIENT_TEST_LOG("Get Transaction Tracking Flag failed!!, "\r
+ "ret = 0x%x", ret);\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ case DRM_DATA_TYPE_TRANSACTION_TRACKING_ID:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Get DRM_DATA_TYPE_TRANSACTION_TRACKING_ID");\r
+ drm_transaction_id_info_s transaction_id_info={"",0};\r
+ ret = drm_get_data(data_type,(void*)file_path,(void*)&transaction_id_info);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("Transaction ID Length =%d",\r
+ transaction_id_info.tr_id_len);\r
+ if(0 != transaction_id_info.tr_id_len){\r
+ DRM_CLIENT_TEST_LOG("Transaction ID =%s",\r
+ transaction_id_info.tr_id);\r
+ }\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("Transaction ID Retrieval FAILED:ret=0x%x",ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_DATA_TYPE_DIVX_REGISTRATION_CODE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Get DRM_DATA_TYPE_DIVX_REGISTRATION_CODE");\r
+\r
+ drm_code_info_s reg_code_info = {"",0};\r
+ ret = drm_get_data(data_type, NULL, (void*) ®_code_info);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("Code Length = %d", reg_code_info.code_len);\r
+ if (0 != reg_code_info.code_len) {\r
+ DRM_CLIENT_TEST_LOG("Code = %s", reg_code_info.code);\r
+ }\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("Divx Registration Code failed!!");\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Get DRM_DATA_TYPE_DIVX_DEREGISTRATION_CODE");\r
+\r
+ drm_code_info_s dereg_code_info = {"",0};\r
+ ret = drm_get_data(data_type, NULL, (void*) &dereg_code_info);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x", ret);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("Code Length = %d", dereg_code_info.code_len);\r
+ if (0 != dereg_code_info.code_len) {\r
+ DRM_CLIENT_TEST_LOG("Code = %s", dereg_code_info.code);\r
+ }\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("Divx Registration Code failed!!");\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ default:\r
+ DRM_CLIENT_TEST_EXCEPTION("Unsupported data type=%d",data_type);\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_get_data completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_process_request:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_process_request start");\r
+ char file_path[512] = {0,};\r
+ int ret = DRM_RETURN_SUCCESS;\r
+ drm_request_type_e request_type = DRM_REQUEST_TYPE_NONE;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter the request type to be processed");\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_REGISTER_FILE",DRM_REQUEST_TYPE_REGISTER_FILE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_UNREGISTER_FILE",DRM_REQUEST_TYPE_UNREGISTER_FILE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES",DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_REGISTER_LICENSE",DRM_REQUEST_TYPE_REGISTER_LICENSE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL",DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE",DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT",DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_HTTP_USER_CANCEL",DRM_REQUEST_TYPE_HTTP_USER_CANCEL);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_REGISTER_COPY_FILE",DRM_REQUEST_TYPE_REGISTER_COPY_FILE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_REGISTER_MOVE_FILE",DRM_REQUEST_TYPE_REGISTER_MOVE_FILE);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_INSERT_EXT_MEMORY",DRM_REQUEST_TYPE_INSERT_EXT_MEMORY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY",DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_REGISTER_SETAS",DRM_REQUEST_TYPE_REGISTER_SETAS);\r
+ DRM_CLIENT_TEST_LOG(" %d ==> DRM_REQUEST_TYPE_UNREGISTER_SETAS",DRM_REQUEST_TYPE_UNREGISTER_SETAS);\r
+\r
+ scanf("%d", (int*)&request_type);\r
+ DRM_CLIENT_TEST_LOG("request_type received=%d",request_type);\r
+\r
+ switch(request_type){\r
+ case DRM_REQUEST_TYPE_REGISTER_FILE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Request for Register file");\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",file_path);\r
+\r
+ ret = drm_process_request(request_type,(void*)file_path,NULL);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("Register success:file_path=%s",\r
+ file_path);\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("Register FAILED:ret=0x%x file_path=%s",\r
+ ret,file_path);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_FILE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Request for Un-register file");\r
+ drm_unregister_info_s unregister_info={"",0};\r
+ DRM_CLIENT_TEST_LOG("Enter complete file name with path");\r
+ scanf("%255s", unregister_info.file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter 1 if you want to remove License also");\r
+ DRM_CLIENT_TEST_LOG("Enter 0 if you don't want to remove License");\r
+ scanf("%d", &unregister_info.remove_license);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s remove_license=%d",\r
+ unregister_info.file_path,unregister_info.remove_license);\r
+\r
+ ret = drm_process_request(request_type,(void*)&unregister_info,NULL);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("Un-register success:file_path=%s",\r
+ unregister_info.file_path);\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("Un-register FAILED:ret=0x%x "\r
+ "file_path=%s",ret,unregister_info.file_path);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_ALL_FILES:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Request for Un-register all files");\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("Un-register All files success");\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("Un-register All files FAILED:"\r
+ "ret=0x%x",ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_LICENSE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Request for Register License");\r
+ drm_register_lic_info_s lic_req_info={"",0,};\r
+ drm_register_lic_resp_s lic_resp_info={""};\r
+ struct stat stat_buf = { 0 };\r
+ FILE *fp = NULL;\r
+ unsigned int read_len=0;\r
+ char *tempPath = NULL;\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter LICENSE file (*.dr/*.drc) with path");\r
+ scanf("%511s", file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",file_path);\r
+\r
+ if (0 == stat(file_path, &stat_buf)) {\r
+ lic_req_info.lic_data_len = stat_buf.st_size;\r
+ DRM_CLIENT_TEST_LOG("file_path=%s file_size=%u",file_path,\r
+ lic_req_info.lic_data_len);\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("stat failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ break;\r
+ }\r
+\r
+ fp = fopen(file_path,"r");\r
+ if(NULL == fp){\r
+ DRM_CLIENT_TEST_EXCEPTION("fopen failed:error=%s file_path=%s",\r
+ strerror(errno),file_path);\r
+ break;\r
+ }\r
+\r
+ memset(lic_req_info.lic_data,0x0,sizeof(lic_req_info.lic_data));\r
+ read_len = fread(lic_req_info.lic_data,1,lic_req_info.lic_data_len,fp);\r
+ DRM_CLIENT_TEST_LOG("read_len=%u lic_req_info.lic_data_len=%u",\r
+ read_len,lic_req_info.lic_data_len);\r
+\r
+ fclose(fp);\r
+\r
+ tempPath = strrchr((char *)file_path, '.');\r
+ if(strncmp(tempPath, ".dr", 2) == 0\r
+ || strncmp(tempPath, ".drc", 3) == 0){\r
+ DRM_CLIENT_TEST_LOG("DRM v1 License file");\r
+\r
+ lic_req_info.lic_version = DRM_OMA_DRMV1_RIGHTS;\r
+ lic_req_info.roap_init_src = DRM_ROAP_INIT_FROM_UNKNOWN;\r
+ lic_req_info.operation_callback.callback = test_operation_cb;\r
+\r
+ ret = drm_process_request(request_type,(void*)&lic_req_info,\r
+ (void*)&lic_resp_info);\r
+ DRM_CLIENT_TEST_LOG("ret=0x%x",ret);\r
+ if(DRM_RETURN_SUCCESS == ret){\r
+ DRM_CLIENT_TEST_LOG("Register License success");\r
+ DRM_CLIENT_TEST_LOG("CID=%s",lic_resp_info.cid);\r
+ }else{\r
+ DRM_CLIENT_TEST_EXCEPTION("Register License FAILED:"\r
+ "ret=0x%x",ret);\r
+ }\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_INITIATOR_URL:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("Request for Initiator URL processing");\r
+\r
+ drm_initiator_info_s initiator_info = {"",0,};\r
+ drm_web_server_resp_data_s ws_resp_data = {"",};\r
+\r
+ /* Get the input parameters */\r
+ DRM_CLIENT_TEST_LOG("Enter the initiator URL");\r
+ scanf("%512s", initiator_info.initiator_url);\r
+ initiator_info.initiator_url_len = strlen(initiator_info.initiator_url);\r
+ initiator_info.operation_callback.callback = test_operation_cb;\r
+\r
+ ret = drm_process_request(request_type, (void*) &initiator_info,\r
+ (void*) &ws_resp_data);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("Server Error Code = %d",\r
+ ws_resp_data.result_code);\r
+ DRM_CLIENT_TEST_LOG("Content URL = %s",\r
+ ws_resp_data.content_url);\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("Submit Initiator URL Failed!!, ret = 0x%x", ret);\r
+ }\r
+\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_SUBMIT_ROAP_MESSAGE");\r
+ drm_submit_roap_message_info_s message_info;\r
+ memset(&message_info,0x0,sizeof(drm_submit_roap_message_info_s));\r
+ ret = drm_process_request(request_type,(void *)&message_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("SUBMIT_ROAP_MESSAGE success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("SUBMIT_ROAP_MESSAGE Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_SUBMIT_ROAP_USER_CONSENT");\r
+ drm_submit_roap_user_consent_info_s user_consent_info;\r
+ memset(&user_consent_info,0x0,sizeof(drm_submit_roap_user_consent_info_s));\r
+ ret = drm_process_request(request_type,(void *)&user_consent_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("SUBMIT_ROAP_USER_CONSENT success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("SUBMIT_ROAP_USER_CONSENT Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_HTTP_USER_CANCEL:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_HTTP_USER_CANCEL");\r
+ drm_http_user_cancel_info_s user_cancel_info;\r
+ memset(&user_cancel_info,0x0,sizeof(drm_http_user_cancel_info_s));\r
+ ret = drm_process_request(request_type,(void *)&user_cancel_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("HTTP_USER_CANCEL success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("HTTP_USER_CANCEL Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_COPY_FILE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_REGISTER_COPY_FILE");\r
+ drm_register_copy_file_info_s copy_file_info;\r
+ memset(©_file_info,0x0,sizeof(drm_register_copy_file_info_s));\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter Source file with path");\r
+ scanf("%255s", copy_file_info.src_file_path);\r
+ DRM_CLIENT_TEST_LOG("src_file_path=%s",copy_file_info.src_file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter Destination file with path");\r
+ scanf("%255s", copy_file_info.dest_file_path);\r
+ DRM_CLIENT_TEST_LOG("dest_file_path=%s",copy_file_info.dest_file_path);\r
+\r
+ ret = drm_process_request(request_type,(void *)©_file_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("REGISTER_COPY_FILE success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("REGISTER_COPY_FILE Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_MOVE_FILE:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_REGISTER_MOVE_FILE");\r
+ drm_register_copy_file_info_s copy_file_info;\r
+ memset(©_file_info,0x0,sizeof(drm_register_copy_file_info_s));\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter Source file with path");\r
+ scanf("%255s", copy_file_info.src_file_path);\r
+ DRM_CLIENT_TEST_LOG("src_file_path=%s",copy_file_info.src_file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter Destination file with path");\r
+ scanf("%255s", copy_file_info.dest_file_path);\r
+ DRM_CLIENT_TEST_LOG("dest_file_path=%s",copy_file_info.dest_file_path);\r
+\r
+ ret = drm_process_request(request_type,(void *)©_file_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("REGISTER_MOVE_FILE success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("REGISTER_MOVE_FILE Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_INSERT_EXT_MEMORY:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_INSERT_EXT_MEMORY");\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("INSERT_EXT_MEMORY success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("INSERT_EXT_MEMORY Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_EXTRACT_EXT_MEMORY");\r
+ ret = drm_process_request(request_type,NULL,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("INSERT_EXT_MEMORY success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("INSERT_EXT_MEMORY Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_REGISTER_SETAS:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_REGISTER_SETAS");\r
+ drm_register_setas_info_s setas_info;\r
+ memset(&setas_info,0x0,sizeof(drm_register_setas_info_s));\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter file name with path to be set");\r
+ scanf("%255s", setas_info.file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",setas_info.file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter SETAS Category");\r
+ DRM_CLIENT_TEST_LOG("Enter=%d -> DRM_SETAS_WALLPAPER",DRM_SETAS_WALLPAPER);\r
+ DRM_CLIENT_TEST_LOG("Enter=%d -> DRM_SETAS_RINGTONE",DRM_SETAS_RINGTONE);\r
+ scanf("%d", (int*)&setas_info.setas_cat);\r
+ DRM_CLIENT_TEST_LOG("setas_cat=%d",setas_info.setas_cat);\r
+\r
+ ret = drm_process_request(request_type,(void *)&setas_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("REGISTER_SETAS success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("REGISTER_SETAS Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ case DRM_REQUEST_TYPE_UNREGISTER_SETAS:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_REQUEST_TYPE_UNREGISTER_SETAS");\r
+ drm_unregister_setas_info_s setas_info;\r
+ memset(&setas_info,0x0,sizeof(drm_unregister_setas_info_s));\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter file name with path to be set");\r
+ scanf("%255s", setas_info.file_path);\r
+ DRM_CLIENT_TEST_LOG("file_path=%s",setas_info.file_path);\r
+\r
+ DRM_CLIENT_TEST_LOG("Enter SETAS Category");\r
+ DRM_CLIENT_TEST_LOG("Enter=%d -> DRM_SETAS_WALLPAPER",DRM_SETAS_WALLPAPER);\r
+ DRM_CLIENT_TEST_LOG("Enter=%d -> DRM_SETAS_RINGTONE",DRM_SETAS_RINGTONE);\r
+ scanf("%d", (int*)&setas_info.setas_cat);\r
+ DRM_CLIENT_TEST_LOG("setas_cat=%d",setas_info.setas_cat);\r
+\r
+ ret = drm_process_request(request_type,(void *)&setas_info,NULL);\r
+ if (DRM_RETURN_SUCCESS == ret) {\r
+ DRM_CLIENT_TEST_LOG("UNREGISTER_SETAS success");\r
+ } else {\r
+ DRM_CLIENT_TEST_EXCEPTION("UNREGISTER_SETAS Failed!!, ret = 0x%x", ret);\r
+ }\r
+ break;\r
+ }\r
+\r
+ default:\r
+ DRM_CLIENT_TEST_EXCEPTION("Unsupported request_type=%d",request_type);\r
+ }\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_process_request completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_print_return_code_values:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_print_return_code_values Start");\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_SUCCESS=%d=0x%x",DRM_RETURN_SUCCESS,DRM_RETURN_SUCCESS);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_INVALID_ARG=%d=0x%x",DRM_RETURN_INVALID_ARG,DRM_RETURN_INVALID_ARG);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_INSUFFICIENT_MEMORY=%d=0x%x",DRM_RETURN_INSUFFICIENT_MEMORY,DRM_RETURN_INSUFFICIENT_MEMORY);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_PARSING_ERROR=%d=0x%x",DRM_RETURN_PARSING_ERROR,DRM_RETURN_PARSING_ERROR);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_DB_ERROR=%d=0x%x",DRM_RETURN_DB_ERROR,DRM_RETURN_DB_ERROR);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_FILE_ERROR=%d=0x%x",DRM_RETURN_FILE_ERROR,DRM_RETURN_FILE_ERROR);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_COMMUNICATION_ERROR=%d=0x%x",DRM_RETURN_COMMUNICATION_ERROR,DRM_RETURN_COMMUNICATION_ERROR);\r
+ DRM_CLIENT_TEST_LOG("DRM_RETURN_INTERNAL_ERROR=%d=0x%x",DRM_RETURN_INTERNAL_ERROR,DRM_RETURN_INTERNAL_ERROR);\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_print_return_code_values Completed");\r
+ break;\r
+ }\r
+\r
+ case DRM_CLIENT_TEST_MAX:\r
+ {\r
+ DRM_CLIENT_TEST_LOG("DRM_CLIENT_TEST_MAX");\r
+ DRM_CLIENT_TEST_LOG("SUCCESS");\r
+ return 0;\r
+ }\r
+\r
+ default:\r
+ DRM_CLIENT_TEST_EXCEPTION("Wrong choice=%d",option);\r
+ goto ERR;\r
+ }\r
+\r
+ DRM_CLIENT_TEST_LOG("SUCCESS");\r
+ return 1;\r
+\r
+ERR:\r
+ DRM_CLIENT_TEST_EXCEPTION("test_case:Error:Exit from DRM CLIENT Test utility");\r
+ return 0;\r
+}\r
+\r
+int main(int argc, char* argv[])\r
+{\r
+ int pid = getpid();\r
+ int choice = DRM_CLIENT_TEST_NONE;\r
+ DRM_CLIENT_TEST_LOG("main:pid=[%d]", pid);\r
+\r
+ do {\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_NONE",DRM_CLIENT_TEST_NONE);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_is_drm_file",DRM_CLIENT_TEST_is_drm_file);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_file_type",DRM_CLIENT_TEST_get_file_type);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_license_status",DRM_CLIENT_TEST_get_license_status);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_content_info",DRM_CLIENT_TEST_get_content_info);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_file_info",DRM_CLIENT_TEST_get_file_info);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_constraint_info",DRM_CLIENT_TEST_get_constraint_info);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_is_action_allowed",DRM_CLIENT_TEST_is_action_allowed);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_get_data",DRM_CLIENT_TEST_get_data);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_process_request",DRM_CLIENT_TEST_process_request);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> DRM_CLIENT_TEST_print_return_code_values",DRM_CLIENT_TEST_print_return_code_values);\r
+ DRM_CLIENT_TEST_LOG("choice=%d -> Exit from TEST Script",DRM_CLIENT_TEST_MAX);\r
+ DRM_CLIENT_TEST_LOG("Enter Your choice:1 to %d:Use choice no-%d to exit the test-program",DRM_CLIENT_TEST_MAX, DRM_CLIENT_TEST_MAX);\r
+ scanf("%3d", &choice);\r
+ } while (1 == test_case(choice));\r
+\r
+ DRM_CLIENT_TEST_LOG("Exiting process=[%d] from main", pid);\r
+ return 0;\r
+}\r