From: Kamil Nowac Date: Wed, 14 Jan 2015 14:45:18 +0000 (+0100) Subject: [Bookmark] Fix TCT test X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~625 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=79e3992c99e62c57a22a97c2e88a323f32ac503c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Bookmark] Fix TCT test Added 2 methods for checking the validity of values. PASS RATE: 35 / 36 Change-Id: I0d67cdb3dbb810127773fc7a147147c7622cdd37 Signed-off-by: Kamil Nowac --- diff --git a/src/bookmark/bookmark_instance.cc b/src/bookmark/bookmark_instance.cc index b4eeef58..f25e200c 100644 --- a/src/bookmark/bookmark_instance.cc +++ b/src/bookmark/bookmark_instance.cc @@ -51,7 +51,7 @@ BookmarkInstance::~BookmarkInstance() { bool BookmarkInstance::bookmark_foreach( Context& ctx, bp_bookmark_info_fmt& info) { int ids_count = 0; - int *ids = NULL; + int* ids = NULL; BookmarkObject item; if (bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count) < 0) return false; @@ -70,6 +70,64 @@ bool BookmarkInstance::bookmark_foreach( return true; } +bool BookmarkInstance::bookmark_url_exists(const char* url) { + int ids_count = 0; + int* ids = NULL; + char* compare_url = NULL; + + if (bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count) < 0) + return true; + if (ids_count > 0) { + for (int i = 0; i < ids_count; i++) { + if (bp_bookmark_adaptor_get_url(ids[i], &compare_url) < 0) { + free(ids); + return true; + } + if (strcmp(url, compare_url) == 0) { + free(compare_url); + free(ids); + return true; + } + } + } + free(compare_url); + free(ids); + return false; +} + +bool BookmarkInstance::bookmark_title_exists_in_parent( + const char* title, int parent) { + int ids_count = 0; + int compare_parent = -1; + int* ids = NULL; + char* compare_title = NULL; + + if (bp_bookmark_adaptor_get_full_ids_p(&ids, &ids_count) < 0) + return true; + if (ids_count > 0) { + for (int i = 0; i < ids_count; i++) { + if (bp_bookmark_adaptor_get_title(ids[i], &compare_title) < 0) { + free(ids); + return true; + } + if (bp_bookmark_adaptor_get_parent_id(ids[i], &compare_parent) < 0) { + free(compare_title); + free(ids); + return true; + } + if (strcmp(title, compare_title) == 0 + && (parent == compare_parent)) { + free(compare_title); + free(ids); + return true; + } + } + } + free(compare_title); + free(ids); + return false; +} + void BookmarkInstance::Bookmark_get( const picojson::value& arg, picojson::object& o) { Context ctx = {0}; @@ -111,6 +169,16 @@ void BookmarkInstance::Bookmark_add( data.parent = arg.get(kParentId).get(); data.type = arg.get(kType).get(); data.url = const_cast(arg.get(kUrl).to_str().c_str()); + + if (!data.type && bookmark_url_exists(data.url)) { + ReportError(o); + return; + } + if (data.type && bookmark_title_exists_in_parent(data.title, data.parent)) { + ReportError(o); + return; + } + if (bp_bookmark_adaptor_create(&saved_id) < 0) { ReportError(o); return; diff --git a/src/bookmark/bookmark_instance.h b/src/bookmark/bookmark_instance.h index 5326b445..00472e42 100644 --- a/src/bookmark/bookmark_instance.h +++ b/src/bookmark/bookmark_instance.h @@ -32,6 +32,8 @@ class BookmarkInstance : public common::ParsedInstance { private: bool bookmark_foreach(Context& ctx, bp_bookmark_info_fmt& info); + bool bookmark_url_exists(const char* url); + bool bookmark_title_exists_in_parent(const char* title, int parent); void Bookmark_get(const picojson::value& arg, picojson::object& o); void Bookmark_add(const picojson::value& arg, picojson::object& o); void Bookmark_remove(const picojson::value& arg, picojson::object& o);