Preference implement refactoring 32/41532/6
authorSeungkeun Lee <sngn.lee@samsung.com>
Tue, 16 Jun 2015 09:35:06 +0000 (18:35 +0900)
committerSeungkeun Lee <sngn.lee@samsung.com>
Thu, 18 Jun 2015 06:39:03 +0000 (15:39 +0900)
 - Preference db lazy initialize
 - Set Size limit (key:80 , value:8192)
 - Set Widget width/height with window.innerWidth/innerHeight
Change-Id: Ic28c8471d686f81f2609f313a57e10cb0025664d

src/bundle/widget_module.cc
src/bundle/widget_module.h
src/extension/widget/widget_api.js

index 77c849e..2626ed8 100755 (executable)
@@ -35,6 +35,8 @@ const char* kSetItemKey = "setItem";
 const char* kRemoveItemKey = "removeItem";
 const char* kLengthKey = "length";
 const char* kClearKey = "clear";
+const int kKeyLengthLimit = 80;
+const int kValueLengthLimit = 8192;
 
 std::vector<const char*> kExcludeList = {
   kOnchangedEventHandler,
@@ -317,6 +319,7 @@ v8::Handle<v8::Object> WidgetModule::NewInstance() {
       v8::Local<v8::ObjectTemplate>::New(isolate, preference_object_template_);
 
   auto widgetdb = WidgetPreferenceDB::GetInstance();
+  widgetdb->InitializeDB();
 
   widget->Set(
       v8::String::NewFromUtf8(isolate, "preference"),
@@ -346,12 +349,6 @@ v8::Handle<v8::Object> WidgetModule::NewInstance() {
   widget->Set(
       v8::String::NewFromUtf8(isolate, "authorHref"),
       v8::String::NewFromUtf8(isolate, widgetdb->authorHref().c_str()));
-  widget->Set(
-      v8::String::NewFromUtf8(isolate, "height"),
-      v8::Uint32::New(isolate, widgetdb->height()));
-  widget->Set(
-      v8::String::NewFromUtf8(isolate, "width"),
-      v8::Uint32::New(isolate, widgetdb->width()));
 
   return handle_scope.Escape(widget);
 }
@@ -379,29 +376,44 @@ void WidgetPreferenceDB::Initialize(const ApplicationData* appdata,
                                     LocaleManager* locale_manager) {
   appdata_ = appdata;
   locale_manager_ = locale_manager;
+}
 
+void WidgetPreferenceDB::InitializeDB() {
   AppDB* db = AppDB::GetInstance();
   if (db->HasKey(kDBPrivateSection, kDbInitedCheckKey)) {
     return;
   }
-  if (appdata->widget_info() == NULL) {
+  if (appdata_->widget_info() == NULL) {
     return;
   }
 
-  auto& preferences = appdata->widget_info()->preferences();
+  auto& preferences = appdata_->widget_info()->preferences();
 
   for (const auto& pref : preferences) {
     if (pref->Name().empty())
       continue;
-    if (db->HasKey(kDBPublicSection, pref->Name()))
+
+    // check size limit
+    std::string key = pref->Name();
+    std::string value = pref->Value();
+    if (key.length() > kKeyLengthLimit) {
+      key.resize(kKeyLengthLimit);
+    }
+
+    if (db->HasKey(kDBPublicSection, key))
       continue;
 
+    // check size limit
+    if (value.length() > kValueLengthLimit) {
+      value.resize(kValueLengthLimit);
+    }
+
     db->Set(kDBPublicSection,
-            pref->Name(),
-            pref->Value());
+            key,
+            value);
     if (pref->ReadOnly()) {
       db->Set(kDBPrivateSection,
-              kReadOnlyPrefix + pref->Name(), "true");
+              kReadOnlyPrefix + key, "true");
     }
   }
   db->Set(kDBPrivateSection, kDbInitedCheckKey, "true");
index d71af5f..ef2591a 100755 (executable)
@@ -41,6 +41,7 @@ class WidgetPreferenceDB {
   static WidgetPreferenceDB* GetInstance();
   void Initialize(const ApplicationData* appdata,
                   LocaleManager* locale_manager);
+  void InitializeDB();
   int Length();
   bool Key(int idx, std::string* key);
   bool GetItem(const std::string& key, std::string* value);
index 7626e10..93b8754 100755 (executable)
@@ -51,11 +51,11 @@ function Widget() {
       writable: false
     },
     "height": {
-      value: parseInt(widget_info_["height"]),
+      value: window && window.innerHeight || 0,
       writable: false
     },
     "width": {
-      value: parseInt(widget_info_["width"]),
+      value: window && window.innerWidth || 0,
       writable: false
     },
     "preferences": {