AddStep(&TaskDatabase::StepLiveboxDBInsert);
AddAbortStep(&TaskDatabase::StepAbortDBInsert);
+ AddAbortStep(&TaskDatabase::StepAbortAceDBInsert);
}
void TaskDatabase::StepWrtDBInsert()
/* Set install Time */
time(&m_context.widgetConfig.installedTime);
- if (m_context.existingWidgetInfo.isExist) { //update
+ if (m_context.isUpdateMode) { //update
LogInfo("Registering widget... (update)");
Try
{
m_handleToRemove = WidgetDAOReadOnly::getHandle(
m_context.widgetConfig.tzAppid);
+
+ std::string makeAppid =
+ DPL::ToUTF8String(m_context.widgetConfig.tzAppid) + "." +
+ "backup";
+ m_backAppId = DPL::FromUTF8String(makeAppid);
}
Catch(WidgetDAOReadOnly::Exception::WidgetNotExist)
{
LogError(
"Given tizenId not found for update installation (Same GUID?)");
- ThrowMsg(Exceptions::InvalidPackage,
+ ThrowMsg(Exceptions::DatabaseFailure,
"Given tizenId not found for update installation");
}
- WidgetDAO::registerOrUpdateWidget(
+
+ WidgetDAO::backupAndUpdateWidget(
+ m_backAppId,
m_context.widgetConfig.tzAppid,
m_context.widgetConfig,
m_context.wacSecurity);
FOREACH(it, m_context.widgetConfig.configInfo.privilegeList) {
std::map<std::string, Feature>::const_iterator result =
g_W3CPrivilegeTextMap.find(DPL::ToUTF8String(it->name));
- std::string tizenAppId = DPL::ToUTF8String(m_context.widgetConfig.tzAppid).c_str();
- std::transform(tizenAppId.begin(), tizenAppId.end(), tizenAppId.begin(), tolower);
if (result != g_W3CPrivilegeTextMap.end()) {
if (result->second == FEATURE_USER_MEDIA) {
- // In case of user media, webkit callback doesn't control origin data
- // Checking code also useing blank("") scheme and origin
- SecurityOriginData data(
- FEATURE_USER_MEDIA,
- Origin(DPL::FromUTF8String(""),
- DPL::FromUTF8String(""),
- 0));
- dao.setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true);
+ dao.setPrivilegeSecurityOriginData(result->second, false);
} else if (result->second == FEATURE_FULLSCREEN_MODE) {
- // In case of fullscreen mode, use case directly compare
- // whether web application define privilege name or not
continue;
} else {
- SecurityOriginData data(
- result->second,
- Origin(DPL::FromUTF8String("app"),
- DPL::FromUTF8String(tizenAppId),
- 0));
- dao.setSecurityOriginData(data, RESULT_ALLOW_ALWAYS, true);
+ dao.setPrivilegeSecurityOriginData(result->second);
}
}
}
{
WrtDB::ExternalLocationList externalLocationsUpdate =
m_context.locations->listExternalLocations();
- if (m_context.existingWidgetInfo.isExist) { //update
+ if (m_context.isUpdateMode) { //update
Try
{
WidgetDAO dao(m_context.widgetConfig.tzAppid);
WrtDB::VconfConfig::GetVconfKeyWebNotificationUsage(
m_context.widgetConfig.tzAppid)] = WrtDB::SETTINGS_TYPE_ON;
vconfData[
+ WrtDB::VconfConfig::GetVconfKeyWebDatabaseUsage(
+ m_context.widgetConfig.tzAppid)] = WrtDB::SETTINGS_TYPE_ON;
+ vconfData[
WrtDB::VconfConfig::GetVconfKeyMemorySavingMode(
m_context.widgetConfig.tzAppid)] = WrtDB::SETTINGS_TYPE_OFF;
LogWarning("[DB Update Task] Aborting... (DB Clean)");
Try
{
- WidgetDAO::unregisterWidget(m_context.widgetConfig.tzAppid);
+ if (m_context.isUpdateMode) {
+ WidgetDAO::restoreUpdateWidget(m_backAppId,
+ m_context.widgetConfig.tzAppid);
+ } else {
+ WidgetDAO::unregisterWidget(m_context.widgetConfig.tzAppid);
+ }
LogDebug("Cleaning DB successful!");
}
Catch(DPL::DB::SqlConnection::Exception::Base)
{
LogError("Failed to handle StepAbortDBClean!");
}
+}
+
+void TaskDatabase::StepAbortAceDBInsert()
+{
+ LogWarning("[DB Update Task] ACE DB Aborting... (DB Clean)");
ace_unregister_widget(static_cast<ace_widget_handle_t>(m_handle));
// Remove also old one. If it was already updated nothing wrong will happen,
if (INVALID_WIDGET_HANDLE != m_handleToRemove) {
ace_unregister_widget(static_cast<ace_widget_handle_t>(m_handle));
}
+
+ if (!AceApi::registerAceWidgetFromDB(m_handleToRemove))
+ {
+ LogError("ace database restore failed");
+ }
+ LogDebug("Ace data inserted");
}
void TaskDatabase::StepLiveboxDBInsert()
std::string tizenId = DPL::ToUTF8String(m_context.widgetConfig.tzAppid);
+ // insert specific information to web livebox db
for (auto it = m_context.widgetConfig.configInfo.m_livebox.begin();
it != m_context.widgetConfig.configInfo.m_livebox.end(); ++it)
{
std::string boxId = DPL::ToUTF8String((**it).m_liveboxId);
std::string boxType;
- if ((**it).m_type == L"") {
+ if ((**it).m_type.empty()) {
boxType = web_provider_livebox_get_default_type();
} else {
boxType = DPL::ToUTF8String((**it).m_type);
LogInfo("livebox id: " << boxId);
LogInfo("livebox type: " << boxType);
- int ret =
- web_provider_livebox_insert_box_type(
- boxId.c_str(), tizenId.c_str(), boxType.c_str());
+ int autoLaunch = (**it).m_autoLaunch == L"true" ? 1 : 0;
+ LogInfo("livebox auto-launch: " << autoLaunch);
- if (ret < 0) {
- LogDebug("failed to set type of livebox: " << boxId);
- }
+ int mouseEvent = (**it).m_boxInfo.m_boxMouseEvent == L"true" ? 1 : 0;
+ LogInfo("livebox mouse-event: " << mouseEvent);
+
+ int pdFastOpen = (**it).m_boxInfo.m_pdFastOpen == L"true" ? 1 : 0;
+ LogInfo("livebox pd fast-open: " << pdFastOpen);
+
+ web_provider_livebox_insert_box_info(
+ boxId.c_str(), tizenId.c_str(), boxType.c_str(),
+ autoLaunch, mouseEvent, pdFastOpen);
}
}
} //namespace WidgetInstall