summaryrefslogtreecommitdiff
path: root/mobile_src/Filesystem/JSFile.h
diff options
context:
space:
mode:
Diffstat (limited to 'mobile_src/Filesystem/JSFile.h')
-rwxr-xr-xmobile_src/Filesystem/JSFile.h303
1 files changed, 303 insertions, 0 deletions
diff --git a/mobile_src/Filesystem/JSFile.h b/mobile_src/Filesystem/JSFile.h
new file mode 100755
index 0000000..d8d4288
--- /dev/null
+++ b/mobile_src/Filesystem/JSFile.h
@@ -0,0 +1,303 @@
+//
+// Tizen Web Device API
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// 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.
+//
+
+
+#ifndef TIZENAPIS_TIZEN_JSFILE_H_
+#define TIZENAPIS_TIZEN_JSFILE_H_
+
+#include <JavaScriptCore/JavaScript.h>
+#include <Commons/IEvent.h>
+#include <CommonsJavaScript/PrivateObject.h>
+#include <CommonsJavaScript/JSCallbackManager.h>
+#include <Security.h>
+#include "INode.h"
+
+namespace DeviceAPI {
+namespace Filesystem {
+class JSFile
+{
+public:
+
+ class PrivateObjectDef
+ {
+ public:
+
+ typedef std::vector<int> PermissionList;
+
+ PrivateObjectDef(const INodePtr &node,
+ const PermissionList &parentPermissions) :
+ m_node(node),
+ m_parentPerms(parentPermissions)
+ {
+ }
+
+ virtual ~PrivateObjectDef()
+ {
+ }
+
+ INodePtr getNode() const
+ {
+ return m_node;
+ }
+
+ PermissionList getParentPermissions() const
+ {
+ return m_parentPerms;
+ }
+
+ void setParentPermissions(const PermissionList &permissions)
+ {
+ m_parentPerms = permissions;
+ }
+
+ void pushParentPermissions(int permissions)
+ {
+ m_parentPerms.push_back(permissions);
+ }
+
+ private:
+ INodePtr m_node;
+ PermissionList m_parentPerms;
+ };
+
+ class ListFilesPrivateData : public WrtDeviceApis::Commons::IEventPrivateData
+ {
+ public:
+ ListFilesPrivateData(
+ const WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr &callbackManager,
+ const PrivateObjectDef::PermissionList parentPermissions) :
+ m_callbackManager(callbackManager),
+ m_parentPermissions(parentPermissions)
+ {
+ }
+
+ virtual ~ListFilesPrivateData()
+ {
+ }
+
+ WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr getCallbackManager() const
+ {
+ return m_callbackManager;
+ }
+
+ PrivateObjectDef::PermissionList getParentPermissions() const
+ {
+ return m_parentPermissions;
+ }
+
+ private:
+ WrtDeviceApis::CommonsJavaScript::JSCallbackManagerPtr m_callbackManager;
+ PrivateObjectDef::PermissionList m_parentPermissions;
+ };
+
+ typedef DPL::SharedPtr<ListFilesPrivateData> ListFilesPrivateDataPtr;
+ typedef DPL::SharedPtr<PrivateObjectDef> PrivateObjectDefPtr;
+ typedef WrtDeviceApis::CommonsJavaScript::PrivateObjectT<PrivateObjectDefPtr>::Type PrivateObjectSecurity;
+
+ class PrivateObject :
+ public DeviceAPI::Common::SecurityAccessor,
+ public PrivateObjectSecurity
+ {
+ public :
+ PrivateObject (JSContextRef context, PrivateObjectDefPtr privDef) :
+ DeviceAPI::Common::SecurityAccessor(),
+ PrivateObjectSecurity(context, privDef)
+ {
+ }
+
+ virtual ~PrivateObject()
+ {
+ }
+ };
+
+public:
+ static const JSClassDefinition* getClassInfo();
+
+ static const JSClassRef getClassRef();
+
+private:
+
+ /**
+ * The callback invoked when an object is first created.
+ */
+ static void initialize(JSContextRef context,
+ JSObjectRef object);
+
+ /**
+ * The callback invoked when an object is finalized.
+ */
+ static void finalize(JSObjectRef object);
+
+ /**
+ * The callback invoked when getting a property's value.
+ */
+ static JSValueRef getProperty(JSContextRef context,
+ JSObjectRef object,
+ JSStringRef propertyName,
+ JSValueRef* exception);
+
+ /**
+ * The callback invoked when collecting the names of an object's properties.
+ */
+ static void getPropertyNames(JSContextRef context,
+ JSObjectRef object,
+ JSPropertyNameAccumulatorRef propertyNames);
+
+ /**
+ * The callback invoked when an object is used as the target of an 'instanceof' expression.
+ */
+ static bool hasInstance(JSContextRef context,
+ JSObjectRef constructor,
+ JSValueRef possibleInstance,
+ JSValueRef* exception);
+
+ /**
+ * Returns a URI for the file.
+ */
+ static JSValueRef toUri(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * Returns list of all files of this directory.
+ */
+ static JSValueRef listFiles(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * WRT_GeneralError exception
+ */
+ static JSValueRef openStream(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * WRT_GeneralError exception
+ */
+ static JSValueRef readAsText(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * The operation is only for file except for directory.
+ * Make sure the dest directory already exists.
+ */
+ static JSValueRef copyTo(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * This operation is only for file not directory
+ * The dest directory should exists in local file system, or the operation fails.
+ */
+ static JSValueRef moveTo(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * create directory even through the parent directories do not exist in local file system.
+ */
+ static JSValueRef createDirectory(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * Creates a new empty file in a specified location.
+ */
+ static JSValueRef createFile(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * Resolves an existing file or directory relative to
+ * the current directory this operation is performed on; and
+ * returns a file handle for it.
+ */
+ static JSValueRef resolve(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * Removes all files from specified directory if recursive is true,
+ * or just remove the directory itself when there is no files or directories underneath it
+ */
+ static JSValueRef deleteDirectory(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * Deletes a specified file.
+ */
+ static JSValueRef deleteFile(JSContextRef context,
+ JSObjectRef object,
+ JSObjectRef thisObject,
+ size_t argumentCount,
+ const JSValueRef arguments[],
+ JSValueRef* exception);
+
+ /**
+ * This structure describes a statically declared function property.
+ */
+ static JSStaticFunction m_functions[];
+
+ /**
+ * This structure describes a statically declared value property.
+ */
+ static JSStaticValue m_properties[];
+
+ /**
+ * This structure contains properties and callbacks that define a type of object.
+ */
+ static JSClassDefinition m_classInfo;
+
+ static JSClassRef m_classRef;
+};
+}
+}
+
+#endif \ No newline at end of file