2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 var validator_ = xwalk.utils.validator;
18 var types_ = validator_.Types;
19 var native_ = new xwalk.utils.NativeManager(extension);
21 function EditManager() {
25 EditManager.prototype.allow = function() {
29 EditManager.prototype.disallow = function() {
33 var _edit = new EditManager();
35 function BookmarkManager() {}
37 BookmarkManager.prototype.get = function() {
38 var args = validator_.validateArgs(arguments, [
41 type: types_.PLATFORM_OBJECT,
42 values: [tizen.BookmarkFolder, tizen.BookmarkItem],
55 if (arguments.length === 0 || args.parentFolder === null) {
56 result = provider.getFolderItems(provider.getRootId(), args.recursive);
58 throw new WebAPIException(WebAPIException.NOT_FOUND_ERR);
61 if (args.parentFolder.id === null || args.parentFolder.id === 0)
62 throw new WebAPIException(WebAPIException.NOT_FOUND_ERR);
64 result = provider.getFolderItems(args.parentFolder.id, args.recursive);
66 throw new WebAPIException(WebAPIException.NOT_FOUND_ERR);
70 BookmarkManager.prototype.add = function() {
71 var args = validator_.validateArgs(arguments, [
74 type: types_.PLATFORM_OBJECT,
75 values: [tizen.BookmarkFolder, tizen.BookmarkItem],
81 type: types_.PLATFORM_OBJECT,
82 values: tizen.BookmarkFolder,
87 if (arguments.length == 1 || args.parentFolder === null) {
88 if (args.bookmark.id) {
89 throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR);
92 provider.addToFolder(args.bookmark, provider.getRootId());
95 if (!args.parentFolder.id) {
96 throw new WebAPIException(WebAPIException.NOT_FOUND_ERR);
99 provider.addToFolder(args.bookmark, args.parentFolder.id);
102 BookmarkManager.prototype.remove = function() {
103 var args = validator_.validateArgs(arguments, [
106 type: types_.PLATFORM_OBJECT,
107 values: [tizen.BookmarkFolder, tizen.BookmarkItem],
113 if (!arguments.length || args.bookmark === null) {
114 var result = native_.callSync('Bookmark_removeAll');
115 if (native_.isFailure(result)) {
116 throw native_.getErrorObject(result);
122 if (!args.bookmark.id) {
123 throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
126 var result = native_.isFailure(native_.callSync('Bookmark_remove', {id: args.bookmark.id}));
127 if (native_.isFailure(result)) {
128 throw native_.getErrorObject(result);
132 args.bookmark.id = null;
133 args.bookmark.parent = undefined;
137 function BookmarkProvider() {}
139 BookmarkProvider.prototype.addToFolder = function() {
140 var args = validator_.validateArgs(arguments, [
143 type: types_.PLATFORM_OBJECT,
144 values: [tizen.BookmarkFolder, tizen.BookmarkItem],
154 var ret = native_.callSync('Bookmark_add',
156 title: args.bookmark.title,
157 url: String(args.bookmark.url),
158 parentId: args.parentId,
159 type: args.bookmark instanceof tizen.BookmarkFolder ? 1 : 0
163 if (native_.isFailure(ret)) {
164 throw native_.getErrorObject(ret);
167 var ret_id = native_.getResultObject(ret);
169 args.bookmark.id = ret_id;
170 args.bookmark.parent = this.getFolder(args.parentId);
174 BookmarkProvider.prototype.getFolder = function() {
175 var args = validator_.validateArgs(arguments, [
183 if (arguments.length === 0 || args.id <= 0)
185 if (args.id == this.getRootId())
188 var ret = native_.callSync('Bookmark_get', {
193 if (native_.isFailure(ret)) {
194 throw native_.getErrorObject(ret);
197 var folder = native_.getResultObject(ret);
198 if (folder === undefined || folder === null) {
199 throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
202 var obj = new tizen.BookmarkFolder(folder[0].title);
203 obj.id = folder[0].id;
204 obj.parent = this.getFolder(folder[0].parentId);
208 BookmarkProvider.prototype.getFolderItems = function() {
209 var args = validator_.validateArgs(arguments, [
218 type: types_.BOOLEAN,
224 var ret = native_.callSync('Bookmark_get', {
229 if (native_.isFailure(ret)) {
230 throw native_.getErrorObject(ret);
233 var folder = native_.getResultObject(ret);
234 if (folder === undefined) {
235 throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
241 var len = folder.length;
243 for (var i = 0; item = folder[i], i < len; i++) {
244 if (Number(item.type) === 0)
245 obj = new tizen.BookmarkItem(item.title, item.url);
247 obj = new tizen.BookmarkFolder(item.title);
251 obj.parent = this.getFolder(item.parentId);
255 if (args.recursive && Number(item.type) !== 0)
256 result = result.concat(this.getFolderItems(item.id, true));
261 BookmarkProvider.prototype.getRootId = function() {
262 var ret = native_.callSync('Bookmark_getRootId');
263 if (native_.isFailure(ret)) {
264 throw native_.getErrorObject(ret);
266 var rootId = native_.getResultObject(ret);
267 return Number(rootId);
270 var provider = new BookmarkProvider();
272 tizen.BookmarkItem = function() {
273 validator_.isConstructorCall(this, tizen.BookmarkItem);
274 var args = validator_.validateArgs(arguments, [
289 Object.defineProperties(this, {
294 set: function(new_parent) {
296 parent_ = new_parent;
310 if (args.url === "undefined")
311 args.url = undefined;
321 set: function(new_id) {
331 tizen.BookmarkFolder = function() {
332 validator_.isConstructorCall(this, tizen.BookmarkFolder);
333 var args = validator_.validateArgs(arguments, [
345 Object.defineProperties(this, {
350 set: function(new_parent) {
352 parent_ = new_parent;
368 set: function(new_id) {
377 exports = new BookmarkManager();