SET(TARGET_VIEW_MODULE_LIB "wrt-view-module")
SET(TARGET_CORE_MODULE_LIB "wrt-core-module")
SET(TARGET_INJECTED_BUNDLE_LIB "wrt-injected-bundle")
-
SET(PROF_LIB "")
IF(PROFILING)
SET(PROF_LIB ${TARGET_PROFILING_LIB})
ENDIF(PROFILING)
+#############################
+# definitions
+ADD_DEFINITIONS("-DWRT_EDJ_PATH=\"/usr/share/edje/wrt/Wrt.edj\"")
+
+#############################
+# install
INSTALL(FILES
${PROJECT_SOURCE_DIR}/wrt_reset_db.sh
${PROJECT_SOURCE_DIR}/wrt_reset_all.sh
DESTINATION share/wrt-engine/
)
ADD_CUSTOM_COMMAND(
- OUTPUT ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
- COMMAND edje_cc -id ${PROJECT_SOURCE_DIR}/data/images
- ARGS ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
- ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
- DEPENDS ${PROJECT_SOURCE_DIR}/data/wrt_theme.edc
- )
-ADD_CUSTOM_COMMAND(
- OUTPUT ${PROJECT_SOURCE_DIR}/data/Daemon.edj
+ OUTPUT ${PROJECT_SOURCE_DIR}/data/Wrt.edj
COMMAND edje_cc
- ARGS ${PROJECT_SOURCE_DIR}/data/Daemon.edc
- ${PROJECT_SOURCE_DIR}/data/Daemon.edj
- DEPENDS ${PROJECT_SOURCE_DIR}/data/Daemon.edc
- )
-ADD_CUSTOM_COMMAND(
- OUTPUT ${PROJECT_SOURCE_DIR}/data/Platform.edj
- COMMAND edje_cc
- ARGS ${PROJECT_SOURCE_DIR}/data/Platform.edc
- ${PROJECT_SOURCE_DIR}/data/Platform.edj
- DEPENDS ${PROJECT_SOURCE_DIR}/data/Platform.edc
- )
-ADD_CUSTOM_TARGET( WRT_THEME_EDJES ALL DEPENDS
- ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
+ ARGS ${PROJECT_SOURCE_DIR}/data/Wrt.edc
+ ${PROJECT_SOURCE_DIR}/data/Wrt.edj
+ DEPENDS ${PROJECT_SOURCE_DIR}/data/Wrt.edc
)
ADD_CUSTOM_TARGET( WRT_EDJES ALL DEPENDS
- ${PROJECT_SOURCE_DIR}/data/Daemon.edj
- )
-ADD_CUSTOM_TARGET( WRT_PLATFORM_LAYOUT_EDJES ALL DEPENDS
- ${PROJECT_SOURCE_DIR}/data/Platform.edj
+ ${PROJECT_SOURCE_DIR}/data/Wrt.edj
)
ADD_CUSTOM_COMMAND(
OUTPUT ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/generic_popup.edj
DESTINATION share/edje/ace/
)
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/wrt_theme.edj
- DESTINATION share/edje/wrt/
- )
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/Daemon.edj
- DESTINATION share/edje/wrt/
- )
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/Platform.edj
+INSTALL(FILES ${PROJECT_SOURCE_DIR}/data/Wrt.edj
DESTINATION share/edje/wrt/
)
ADD_CUSTOM_COMMAND(
INSTALL(FILES ${CMAKE_SOURCE_DIR}/accesses.d/wrt_launchpad_daemon.rule
DESTINATION /opt/etc/smack/accesses.d/
)
+# install systemd files
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/wrt_launchpad_daemon@.service
+ DESTINATION /usr/lib/systemd/system/
+ )
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/wrt_launchpad_daemon_1.socket
+ DESTINATION /usr/lib/systemd/system/
+ )
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/systemd/wrt_launchpad_daemon_2.socket
+ DESTINATION /usr/lib/systemd/system/
+ )
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(po)
IF(WITH_TESTS)
add_subdirectory(tests)
ENDIF(WITH_TESTS)
-
-
+++ /dev/null
-collections {
- group { name: "platformlayout";
- parts {
- part { name: "elm.swallow.bg";
- type: SWALLOW;
- scale: 1;
- description { state: "default" 0.0;
- }
- }
- part { name: "elm.swallow.content";
- type: SWALLOW;
- scale: 1;
- description { state: "default" 0.0;
- }
- }
- part { name: "elm.swallow.controlbar";
- type: SWALLOW;
- description { state: "default" 0.0;
- visible: 0;
- }
- }
- }
- }
-}
collections {
group {
- name: "client";
+ name: "web-application";
parts {
part {
name: "base";
visible: 1;
}
}
- part {
- name: "elm.swallow.backward";
- type: SWALLOW;
- mouse_events: 1;
- repeat_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- visible: 0;
- min: 91 79;
- max: 91 79;
- fixed: 1 1;
- align: 1.0 1.0;
- rel1 { relative: 1.0 1.0; }
- rel2 { relative: 1.0 1.0; }
- }
- description {
- state: "visible" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- part {
- name: "elm.rect.comboboxPickerBG";
- scale: 1;
- type: RECT;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- rel1 { relative: 0.0 0.0; }
- rel2 { relative: 1.0 1.0; }
- color: 100 100 100 150;
- }
- description {
- state: "hideComboboxPicker" 0.0;
- inherit: "default" 0.0;
- }
- description {
- state: "showComboboxPicker" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- part {
- name: "elm.swallow.comboboxPicker";
- scale: 1;
- type: SWALLOW;
- mouse_events: 1;
- description {
- state: "default" 0.0;
- visible: 0;
- fixed: 1 1;
- align: 0.0 0.0;
- rel1 { relative: 0.0 1.0; }
- rel2 { relative: 1.0 1.0; }
- }
- description {
- state: "hideComboboxPicker" 0.0;
- inherit: "default" 0.0;
- align: 0.0 0.0;
- rel1 { relative: 0.0 1.0; }
- rel2 { relative: 1.0 1.0; }
- }
- description {
- state: "showComboboxPicker" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- align: 0.0 0.0;
- rel1 { relative: 0.0 0.5; }
- rel2 { relative: 1.0 1.0; }
- }
- }
}//end of parts
-
programs {
- program { name: "show,backward";
- signal: "show,backward,signal";
- action: STATE_SET "visible" 0.0;
- target: "elm.swallow.backward";
- }
- program { name: "hide,backward";
- signal: "hide,backward,signal";
- action: STATE_SET "default" 0.0;
- target: "elm.swallow.backward";
- }
- program { name: "showComboboxPicker";
- signal: "show,comboboxPicker";
- action: STATE_SET "showComboboxPicker" 0.0;
- target: "elm.rect.comboboxPickerBG";
- after: "showComboboxPicker_";
- }
- program { name: "hideComboboxPicker";
- signal: "hide,comboboxPicker";
- action: STATE_SET "hideComboboxPicker" 0.0;
- target: "elm.rect.comboboxPickerBG";
- after: "hideComboboxPicker_";
- }
- program { name: "showComboboxPicker_";
- signal: "showComboboxPicker_";
- action: STATE_SET "showComboboxPicker" 0.0;
- transition: DECELERATE 0.5;
- target: "elm.swallow.comboboxPicker";
- }
- program { name: "hideComboboxPicker_";
- signal: "hideComboboxPicker_";
- action: STATE_SET "hideComboboxPicker" 0.0;
- transition: DECELERATE 0.5;
- target: "elm.swallow.comboboxPicker";
- }
program { name: "show,progress";
signal: "show,progress,signal";
action: STATE_SET "visible" 0.0;
+++ /dev/null
-#define BACKWARD_ICON_1 "backward_1.png"
-#define BACKWARD_ICON_2 "backward_2.png"
-
-#define BUTTON(button_name, normal_image, press_image, l, r, t, b) \
-group { \
- name: "elm/button/base/wrt/"#button_name; \
- images { \
- image: normal_image COMP; \
- image: press_image COMP; \
- } \
- styles { \
- style { \
- name: #button_name"btn_textblock_style"; \
- base: "font=FONT_CONTENT font_size=20 align=center color=#4E4945 wrap=char"; \
- tag: "br" "\n"; \
- tag: "hilight" "+ font=FONT_CONTENT:style=Bold"; \
- tag: "b" "+ font=FONT_CONTENT:style=Bold"; \
- tag: "tab" "\t"; \
- } \
- } \
- parts { \
- part { \
- name: "button_image"; \
- mouse_events: 1; \
- effect: SOFT_SHADOW; \
- description { \
- state: "default" 0.0; \
- image { \
- normal: normal_image; \
- border: l r t b; \
- } \
- } \
- description { \
- state: "clicked" 0.0; \
- inherit: "default" 0.0; \
- image.normal: press_image; \
- } \
- description { \
- state: "disabled" 0.0; \
- inherit: "default" 0.0; \
- image.normal: normal_image; \
- } \
- } \
- part { \
- name: "elm.text"; \
- type: TEXTBLOCK; \
- effect: SHADOW; \
- mouse_events: 0; \
- scale: 1; \
- description { \
- state: "default" 0.0; \
- visible: 0; \
- fixed: 1 1; \
- align: 0.5 0.5; \
- rel1 { relative: 0.1 0; to: "button_image"; } \
- rel2 { relative: 0.9 1; to: "button_image"; } \
- color: 0 0 0 255; \
- text { \
- style: #button_name"btn_textblock_style"; \
- min: 0 0; \
- max: 0 1; \
- } \
- } \
- description { \
- state: "visible" 0.0; \
- inherit: "default" 0.0; \
- visible: 1; \
- min: 1 1; \
- } \
- description { \
- state: "clicked" 0.0; \
- inherit: "default" 0.0; \
- visible: 1; \
- min: 1 1; \
- } \
- description { \
- state: "disabled" 0.0; \
- inherit: "default" 0.0; \
- color: 0 0 0 128; \
- color3: 0 0 0 0; \
- } \
- description { \
- state: "disabled_visible" 0.0; \
- inherit: "default" 0.0; \
- color: 0 0 0 128; \
- color3: 0 0 0 0; \
- visible: 1; \
- min: 1 1; \
- } \
- } \
- part { \
- name: "over1"; \
- mouse_events: 0; \
- description { \
- state: "default" 0.0; \
- rel2.relative: 1.0 0.5; \
- } \
- description { \
- state: "disabled" 0.0; \
- inherit: "default" 0.0; \
- } \
- } \
- part { \
- name: "over2"; \
- mouse_events: 1; \
- repeat_events: 1; \
- ignore_flags: ON_HOLD; \
- description { \
- state: "default" 0.0; \
- } \
- description { \
- state: "disabled" 0.0; \
- inherit: "default" 0.0; \
- visible: 0; \
- } \
- } \
- part { \
- name: "over3"; \
- mouse_events: 1; \
- repeat_events: 1; \
- description { \
- state: "default" 0.0; \
- color: 255 255 255 0; \
- } \
- description { \
- state: "clicked" 0.0; \
- inherit: "default" 0.0; \
- visible: 1; \
- color: 255 255 255 0; \
- } \
- } \
- part { \
- name: "disabler"; \
- type: RECT; \
- description { \
- state: "default" 0.0; \
- color: 0 0 0 0; \
- visible: 0; \
- } \
- description { \
- state: "disabled" 0.0; \
- inherit: "default" 0.0; \
- visible: 1; \
- } \
- } \
- } \
- programs { \
- program { \
- name: "button_click"; \
- signal: "mouse,down,1"; \
- source: "over2"; \
- action: SIGNAL_EMIT "elm,action,press" ""; \
- after: "button_click_anim"; \
- } \
- program { \
- name: "button_click_anim"; \
- action: STATE_SET "clicked" 0.0; \
- target: "button_image"; \
- target: "elm.text"; \
- } \
- program { \
- name: "button_unclick"; \
- signal: "mouse,up,1"; \
- source: "over2"; \
- action: SIGNAL_EMIT "elm,action,unpress" ""; \
- after: "button_unclick_anim"; \
- } \
- program { \
- name: "button_unclick_anim"; \
- action: STATE_SET "default" 0.0; \
- target: "button_image"; \
- action: STATE_SET "visible" 0.0; \
- target: "elm.text"; \
- } \
- program { \
- name: "button_mouseout_clicked"; \
- signal: "mouse,out"; \
- source: "over2"; \
- script { \
- new st[31]; \
- new Float:vl; \
- get_state(PART:"elm.text", st, 30, vl); \
- if (!strcmp(st, "clicked")) \
- { \
- set_state(PART:"elm.text", "visible", 0.0); \
- set_state(PART:"button_image", "visible", 0.0); \
- } \
- } \
- } \
- program { \
- name: "button_click2"; \
- signal: "mouse,down,1"; \
- source: "over3"; \
- action: STATE_SET "clicked" 0.0; \
- target: "over3"; \
- } \
- program { \
- name: "button_unclick2"; \
- signal: "mouse,clicked,1"; \
- source: "over3"; \
- action: STATE_SET "default" 0.0; \
- target: "over3"; \
- } \
- program { \
- name: "button_unclick3"; \
- signal: "mouse,clicked,1"; \
- source: "over2"; \
- action: SIGNAL_EMIT "elm,action,click" ""; \
- } \
- program { \
- name: "text_show"; \
- signal: "elm,state,text,visible"; \
- source: "elm"; \
- action: STATE_SET "visible" 0.0; \
- target: "elm.text"; \
- } \
- program { \
- name: "text_hide"; \
- signal: "elm,state,text,hidden"; \
- source: "elm"; \
- action: STATE_SET "default" 0.0; \
- target: "elm.text"; \
- } \
- program { \
- name: "disable"; \
- signal: "elm,state,disabled"; \
- source: "elm"; \
- action: STATE_SET "disabled" 0.0; \
- target: "button_image"; \
- target: "over1"; \
- target: "over2"; \
- target: "disabler"; \
- after: "disable_text"; \
- } \
- program { \
- name: "disable_text"; \
- script { \
- new st[31]; \
- new Float:vl; \
- get_state(PART:"elm.text", st, 30, vl); \
- if (!strcmp(st, "visible")) \
- set_state(PART:"elm.text", "disabled_visible", 0.0); \
- else \
- set_state(PART:"elm.text", "disabled", 0.0); \
- } \
- } \
- program { \
- name: "enable"; \
- signal: "elm,state,enabled"; \
- source: "elm"; \
- action: STATE_SET "default" 0.0; \
- target: "button_image"; \
- target: "over1"; \
- target: "over2"; \
- target: "disabler"; \
- after: "enable_text"; \
- } \
- program { \
- name: "enable_text"; \
- script { \
- new st[31]; \
- new Float:vl; \
- get_state(PART:"elm.text", st, 30, vl); \
- if (!strcmp(st, "disabled_visible")) \
- set_state(PART:"elm.text", "visible", 0.0); \
- else \
- set_state(PART:"elm.text", "default", 0.0); \
- } \
- } \
- } \
-}
-
-collections {
- BUTTON(backward, BACKWARD_ICON_1, BACKWARD_ICON_2, 0, 0, 0, 0);
-}
-
#git:framework/web/wrt
Name: wrt
Summary: web runtime
-Version: 0.8.240
+Version: 0.8.251
Release: 1
Group: Development/Libraries
License: Apache License, Version 2.0
URL: N/A
Source0: %{name}-%{version}.tar.gz
-## wrt-launchpad-daemon #######################################################
-Source101: wrt_launchpad_daemon@.service
-###############################################################################
BuildRequires: cmake
BuildRequires: gettext
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(libsystemd-daemon)
+%{?systemd_requires}
+
+#Use these macro to avoid hard-coded path
+#After upgrading systemd to v204 or higher macro can be deleted
+%define _unitdir /usr/lib/systemd/system
###############################################################################
%description
%make_install
## wrt-launchpad-daemon #######################################################
-mkdir -p %{buildroot}/etc/init.d
-install -m 755 src/wrt-launchpad-daemon/wrt_launchpad_run.sh %{buildroot}/%{_sysconfdir}/init.d
-
-mkdir -p %{buildroot}/etc/rc.d/rc3.d
-mkdir -p %{buildroot}/etc/rc.d/rc4.d
-ln -sf ../../init.d/wrt_launchpad_run.sh %{buildroot}/%{_sysconfdir}/rc.d/rc3.d/S15wrt_launchpad_run
-ln -sf ../../init.d/wrt_launchpad_run.sh %{buildroot}/%{_sysconfdir}/rc.d/rc4.d/S80wrt_launchpad_run
#systemd
-mkdir -p %{buildroot}%{_libdir}/systemd/system/graphical.target.wants
-install -m 0644 %SOURCE101 %{buildroot}%{_libdir}/systemd/system/wrt_launchpad_daemon@.service
-ln -s ../wrt_launchpad_daemon@.service %{buildroot}%{_libdir}/systemd/system/graphical.target.wants/wrt_launchpad_daemon@app.service
+mkdir -p %{buildroot}%{_unitdir}/graphical.target.wants
+mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants
+ln -s %{_unitdir}/wrt_launchpad_daemon@.service %{buildroot}%{_unitdir}/graphical.target.wants/wrt_launchpad_daemon@app.service
+ln -s %{_unitdir}/wrt_launchpad_daemon_1.socket %{buildroot}%{_unitdir}/sockets.target.wants/wrt_launchpad_daemon_1.socket
+ln -s %{_unitdir}/wrt_launchpad_daemon_2.socket %{buildroot}%{_unitdir}/sockets.target.wants/wrt_launchpad_daemon_2.socket
%preun
if [ $1 == 0 ]; then
## wrt-launchpad-daemon #######################################################
%attr(755,root,root) %{_bindir}/wrt_launchpad_daemon
/usr/share/aul/preload_list_wrt.txt
-%{_sysconfdir}/init.d/wrt_launchpad_run.sh
-%attr(0755,root,root) %{_sysconfdir}/rc.d/rc3.d/S15wrt_launchpad_run
-%attr(0755,root,root) %{_sysconfdir}/rc.d/rc4.d/S80wrt_launchpad_run
/etc/smack/accesses2.d/wrt_launchpad_daemon.rule
/opt/etc/smack/accesses.d/wrt_launchpad_daemon.rule
#systemd
-%{_libdir}/systemd/system/graphical.target.wants/wrt_launchpad_daemon@app.service
-%{_libdir}/systemd/system/wrt_launchpad_daemon@.service
+%{_unitdir}/graphical.target.wants/wrt_launchpad_daemon@app.service
+%{_unitdir}/wrt_launchpad_daemon@.service
+%{_unitdir}/sockets.target.wants/wrt_launchpad_daemon_1.socket
+%{_unitdir}/wrt_launchpad_daemon_1.socket
+%{_unitdir}/sockets.target.wants/wrt_launchpad_daemon_2.socket
+%{_unitdir}/wrt_launchpad_daemon_2.socket
###############################################################################
%files devel
# limitations under the License.
#
-SET(POFILES ar.po ca.po de_DE.po en.po es_MX.po fi.po ga.po hr.po is.po ka.po lt.po nb.po pt_BR.po ru_RU.po sr.po uk.po zh_HK.po az.po cs.po el_GR.po en_US.po et.po fr_CA.po gl.po hu.po it_IT.po kk.po lv.po nl_NL.po pt_PT.po sk.po sv.po uz.po zh_SG.po bg.po da.po en_PH.po es_ES.po eu.po fr_FR.po hi.po hy.po ja_JP.po ko_KR.po mk.po pl.po ro.po sl.po tr_TR.po zh_CN.po zh_TW.po)
+SET(POFILES
+ar.po ca.po de_DE.po en.po es_MX.po fi.po ga.po hr.po is.po ka.po lt.po nb.po pt_BR.po ru_RU.po sr.po uk.po zh_HK.po
+az.po cs.po el_GR.po en_US.po et.po fr_CA.po gl.po hu.po it_IT.po kk.po lv.po nl_NL.po pt_PT.po sk.po sv.po uz.po zh_SG.po
+bg.po da.po en_PH.po es_ES.po eu.po fr_FR.po hi.po hy.po ja_JP.po ko_KR.po mk.po pl.po ro.po sl.po tr_TR.po zh_CN.po zh_TW.po
+)
+
SET(MSGFMT "/usr/bin/msgfmt")
SET(LOCALE_DIR "/usr/share/wrt-engine/locale/")
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "مشاركة ملفات تعريف الارتباط بين تطبيقات الويب"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "جاري بدء التنزيل..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "يطالب %s بتحديد موقعك"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "تذكر الأفضلية"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "توجد محاولة من %1$s (%2$s) لتخزين كمية كبيرة من البيانات على جهازك للاستخدام عند عدم الاتصال بالإنترنت"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "يوجد طلب من %1$s (%2$s) للحصول على إذن من أجل تخزين بيانات على جهازك للاستخدام عند عدم الاتصال بالإنترنت"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "يوجد طلب من %1$s (%2$s) للحصول على إذن من أجل الوصول إلى موقعك"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "يوجد طلب من %1$s (%2$s) للحصول على إذن من أجل عرض الإخطارات"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "يوجد طلب من %1$s (%2$s) للحصول على إذن من أجل استخدام الكاميرا"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Veb-proqramlar arasında kukiləri paylaş"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Yükləmə başladılır..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s məkanınızı sorğulayır"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Seçimi yadda saxla"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) sizin cihazınızda oflayn istifadə üçün böyük həcmdə məlumat saxlamağa cəhd edir"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) cihazınızda oflayn istifadə üçün məlumat saxlamağa icazə istəyir"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) yerinizə daxil olmaq üçün icazə istəyir"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) bildirişləri göstərmək üçün icazə istəyir"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) kameranızdan istifadə etmək üçün icazə istəyir"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Споделяне на бисквитки между уеб приложения"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Начало на изтеглянето..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s иска вашето местоположение"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Запомни предпочитанията"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) се опитва да съхранява голямо количество данни на вашето устройство за използване офлайн"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) иска разрешение за съхраняване на данни на вашето устройство за използване офлайн"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) иска разрешение за достъп до вашето местоположение"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) иска разрешение за показване на известия"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) иска разрешение за използване на вашата камера"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Compartir galetes entre aplicacions web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "S'està iniciant la descàrrega..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s sol·licita la seva ubicació"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Recordar preferència"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) està intentant emmagatzemar una gran quantitat de dades al seu dispositiu per a ús fora de línia"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) està demanant permís per emmagatzemar dades al seu dispositiu per a ús fora de línia"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) està demanant permís per accedir a la seva ubicació"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) està demanant permís per mostrar notificacions"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) està demanant permís per utilitzar la seva càmera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Sdílet cookies mezi webovými aplikacemi"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Spouští se stahování..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s požaduje informace o vaší poloze"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Zapamatovat preference"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) se pokouší uložit do zařízení velké množství dat pro použití offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) žádá o povolení uložit do zařízení data pro použití offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) žádá o povolení přístupu k informacím o vaší poloze"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) žádá o povolení zobrazit oznámení"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) žádá o povolení použít fotoaparát"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Del cookies mellem web-programmer"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Starter download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s anmoder om din placering"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Husk præference"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) forsøger at gemme en stor mængde data på din enhed til offline-brug"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) anmoder om tilladelse til at gemme en stor mængde data på din enhed til offline-brug"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) anmoder om tilladelse til at få adgang til din placering"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) anmoder om tilladelse til at få vist notifikationer"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) anmoder om tilladelse til at bruge dit kamera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Cookies zwischen Web Apps freigeben"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Download wird gestartet..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s fragt Ihre Position an"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Voreinstellung merken"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) versucht, eine große Datenmenge für die Offline-Verwendung auf Ihrem Gerät zu speichern."
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) möchte die Berechtigung erhalten, Daten für die Offline-Verwendung auf Ihrem Gerät zu speichern."
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) möchte die Berechtigung erhalten, um auf Ihren Standort zuzugreifen."
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) möchte die Berechtigung erhalten, Benachrichtigungen anzuzeigen."
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) möchte die Berechtigung erhalten, Ihre Kamera zu benutzen."
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Κοινή χρήση cookies μεταξύ εφαρμογών web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Ξεκινά η λήψη..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "Το %s ζητά την τοποθεσία σας"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Απομνημόνευση προτίμησης"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "Η ιστοσελίδα %1$s (%2$s) επιχειρεί να αποθηκεύσει ένα μεγάλο όγκο δεδομένων στη συσκευή σας για χρήση εκτός σύνδεσης"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "Η ιστοσελίδα %1$s (%2$s) ζητά δικαίωμα για την αποθήκευση δεδομένων στη συσκευή σας για χρήση εκτός σύνδεσης"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "Η ιστοσελίδα %1$s (%2$s) ζητά δικαίωμα πρόσβασης στα δεδομένα θέσης σας"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "Η ιστοσελίδα %1$s (%2$s) ζητά δικαίωμα για την εμφάνιση ειδοποιήσεων"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "Η ιστοσελίδα %1$s (%2$s) ζητά δικαίωμα για τη χρήση της κάμεράς σας"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Share cookies between web apps"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Starting download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s requests your location"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Remember preference"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is attempting to store a large amount of data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is requesting permission to store data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) is requesting permission to access your location"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) is requesting permission to show notifications"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) is requesting permission to use your camera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Share cookies between web apps"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Starting download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s requests your location"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Remember preference"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is attempting to store a large amount of data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is requesting permission to store data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) is requesting permission to access your location"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) is requesting permission to show notifications"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) is requesting permission to use your camera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Share cookies between web apps"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Starting download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s requests your location"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Remember preference"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is attempting to store a large amount of data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) is requesting permission to store data on your device for offline use"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) is requesting permission to access your location"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) is requesting permission to show notifications"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) is requesting permission to use your camera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Compartir cookies entre aplicaciones web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Iniciando descarga..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s solicita su ubicación"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Recordar preferencias"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está intentando almacenar una gran cantidad de datos en su dispositivo para su uso fuera de línea"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está solicitando permiso para almacenar datos en su dispositivo para su uso fuera de línea"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) está solicitando permiso para acceder a su ubicación"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) está solicitando permiso para mostrar notificaciones"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) está solicitando permiso para usar su cámara"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Compartir cookies entre aplicaciones Web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Iniciando descarga..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s solicita su ubicación"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Preferencias de recordatorio"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está intentado almacenar grandes cantidades de datos en su dispositivo para el uso sin conexión"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está solicitando permiso para almacenar grandes cantidades de datos en su dispositivo para el uso sin conexión"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) está solicitando permiso para acceder a su ubicación"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) está solicitando permiso para mostrar notificaciones"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) está solicitando permiso para usar su cámara"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Jagage küpsiseid veebirakenduste vahel"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Allalaadimise alustamine..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s taotleb teie asukohta"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Mäleta eelistusi"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) proovib teie seadmesse salvestada suurt hulka andmeid, et kasutada neid võrguühenduseta"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) taotleb luba salvestada teie seadmesse andmeid, et kasutada neid võrguühenduseta"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) taotleb luba juurdepääsuks teie asukohale"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) taotleb luba näidata teavitusi"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) taotleb luba kasutada teie kaamerat"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Partekatu aplikazio web orrien arteko cookieak"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Deskarga hasten..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s-(e)k zure kokapena eskatu dizu"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Gogoratu hobespenak"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) datu kopuru handia gordetzen saiatzen ari da zure gailua lineaz kanpo erabiltzeko"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) baimena eskatzen ari zaizu datu kopuru handia gordetzeko zure gailuan lineaz kanpoko erabilerarako"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) baimena eskatzen ari zaizu zure kokapenera sartzeko"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) baimena eskatzen ari zaizu jakinarazpenak erakusteko"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) baimena eskatzen ari zaizu zure kamera erabiltzeko"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Jaa evästeitä sovellusten välillä"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Lataus käynnistetään..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s pyytää sijaintiasi"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Muista ensisijainen asetus"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) yrittää tallentaa suuren määrän tietoja laitteeseen offline-tilassa tapahtuvaa käyttöä varten"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) pyytää lupaa tietojen tallentamiseen laitteeseen offline-tilassa tapahtuvaa käyttöä varten"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) pyytää lupaa sijaintisi käyttämiseen"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) pyytää lupaa ilmoitusten näyttämiseen"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) pyytää lupaa kamerasi käyttämiseen"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Partager les cookies entre les applications Web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Début du téléchargement..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s demande votre position"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Mémoriser la préférence"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) tente d'enregistrer une grande quantité de données sur votre appareil pour une utilisation hors-ligne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) demande l'autorisation d'enregistrer des données sur votre appareil pour une utilisation hors-ligne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) demande l'autorisation de se connecter pour connaitre votre position"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) demande l'autorisation de consulter les notifications"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) demande l'autorisation d'utiliser votre appareil photo"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Partager les cookies entre les applications Web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Début du téléchargement..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s demande votre position"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Mémoriser la préférence"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) tente d'enregistrer une grande quantité de données sur votre appareil pour une utilisation hors-ligne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) demande l'autorisation d'enregistrer des données sur votre appareil pour une utilisation hors-ligne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) demande l'autorisation de se connecter pour connaître votre position"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) demande l'autorisation de consulter les notifications"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) demande l'autorisation d'utiliser votre appareil photo"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Comhroinn fianáin idir feidhmchláir Ghréasáin"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Ag tosú ar íoslódáil..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "Iarrann %s do shuíomh"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Cuimhnigh ar mo shainrogha"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "Tá %1$s (%2$s) ag iarraidh líon mór sonraí a stóráil ar do ghléas le húsáid as líne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "Tá %1$s (%2$s) ag iarraidh ceada le sonraí a stóráil ar do ghléas le húsáid as líne"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "Tá %1$s (%2$s) ag iarraidh ceada le do shuíomh a rochtain"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "Tá %1$s (%2$s) ag iarraidh ceada le fógraí a thaispeáint"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "Tá %1$s (%2$s) ag iarraidh ceada le do cheamara a úsáid"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Compartir cookies entre aplicacións web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Iniciando descarga..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s solicita a túa localización"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Lembrar preferencia"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está tentando almacenar unha grande cantidade de datos no teu dispositivo para utilizalos fóra de liña"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está solicitando permiso para almacenar datos no teu dispositivo para utilizalos fóra de liña"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) está solicitando permiso para ter acceso á túa situación"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) está solicitando permiso para amosar notificacións"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) está solicitando permiso para usar a túa cámara"
+
msgstr "सुरक्षा सेटिंग्स"
msgid "IDS_ST_HEADER_USE_MY_LOCATION_ABB"
-msgstr "मà¥\87रà¥\87 सà¥\8dथान à¤\95ा उपयोग करें"
+msgstr "मà¥\87रा सà¥\8dथान उपयोग करें"
msgid "IDS_ST_BUTTON_OK"
msgstr "ओके"
msgstr "लायसेंस जानकारी"
msgid "IDS_WRT_BODY_ACCESS_FILE_SYSTEM"
-msgstr "फ़ाà¤\87ल सिसà¥\8dà¤\9fम à¤\95ा à¤\89पयà¥\8bà¤\97 करें"
+msgstr "फ़ाà¤\87ल सिसà¥\8dà¤\9fम à¤\8dà¤\95à¥\8dसà¥\87स करें"
msgid "IDS_WRT_BODY_EXCEPTION_SETTINGS"
msgstr "अपवाद सेटिंग्स"
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "वेब ऐप्स के मध्य कुकीज़ साझा करें"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "डाउनलोड शुरू कर रहे है..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s आपके स्थान का अनुरोध करता है"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "प्राथमिकता याद रखें"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) आपके डिवाइस पर ऑफ़लाइन उपयोग करने के लिए बड़ी मात्रा में डाटा स्टोर करने का प्रयास कर रहा है"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) आपके डिवाइस पर ऑफ़लाइन उपयोग करने के लिए डाटा स्टोर करने हेतु अनुरोध कर रहा है"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) आपके स्थान को ऍक्सेस करने की अनुमति का अनुरोध कर रहा है"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) अधिसूचना दिखाने की अनुमति का अनुरोध कर रहा है"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) आपके कैमरा उपयोग करने की अनुमति का अनुरोध कर रहा है"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Dijeli kolačiće među web aplikacijama"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Pokretanje skidanja..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s traži vašu lokaciju"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Spremi postavke"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) pokušava pohraniti veću količinu podataka na vaš uređaj za korištenje izvan mreže"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) traži dopuštenje da pohrani veću količinu podataka na vaš uređaj za korištenje izvan mreže"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) traži dopuštenje da pristupi vašoj lokaciji"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) traži dopuštenje da prikaže obavijesti"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) traži dopuštenje da koristi vašu kameru"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Cookie-k megosztása a webalkalmazások között"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Letöltés indítása..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "A(z) %s az Ön helyadatait kéri"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Beállítások megjegyzése"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) nagymennyiségű adatot próbál az eszközön tárolni offline használatra"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) engedélyt kér nagymennyiségű adat tárolására az eszközön offline használatra"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) engedélyt kér az Ön helyadataihoz való hozzáféréshez"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) engedélyt kér értesítések megjelenítésére"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) engedélyt kér a fényképező használatára"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Փոխանակել թխուկներ համացանցային ծրագրերի միջև"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Ներբեռնման մեկնարկում..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s Ձեր տեղի հարցում է կատարում"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Հիշել նախապատվությունը"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) փորձում է ցանցից դուրս օգտագործման համար մեծ քանակությամբ տվյալներ պահել Ձեր սարքում"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) հարցնում է ցանցից դուրս օգտագործման համար Ձեր սարքում տվյալներ պահելու թույլտվություն"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) հարցնում է Ձեր գտնվելու տեղը մուտք գործելու թույլտվություն"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) հարցնում է ծանուցումները ցույց տալու թույլտվություն"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) հարցնում է Ձեր խցիկն օգտագործելու թույլտվություն"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Deila fótsporum milli vefforrita"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Ræsi niðurhal..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s biður um staðsetningu þína"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Muna stillingu"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) er að reyna að geyma mikið magn gagna í tækinu til notkunar án nettengingar"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) biður um leyfi til að geyma mikið magn gagna í tækinu til notkunar án nettengingar"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) biður um leyfi til að fá aðgang að staðsetningunni þinni"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) biður um leyfi til að sýna tilkynningar"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) biður um leyfi til að nota myndavélina þína"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Condividi cookie tra le applicazioni Web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Inizio download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s richiede la vostra posizione"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Ricorda preferenza"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) sta tentando di archiviare una grande quantità di dati sul dispositivo in uso per l'utilizzo offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) sta chiedendo il permesso di archiviare i dati sul dispositivo in uso per l'utilizzo offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) sta chiedendo il permesso di accedere alla posizione dell'utente"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) sta chiedendo il permesso di mostrare le notifiche"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) sta chiedendo il permesso di utilizzare la fotocamera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Webアプリ間でCookieを共有"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "ダウンロード開始..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%sはあなたの位置をリクエストしました"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "設定を保存"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s(%2$s)がオフラインで使用するために、端末に容量の大きなデータを保存しようとしています。"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s(%2$s)がオフラインで使用するために、端末にデータを保存する権限を要求しています。"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s(%2$s)が現在地情報にアクセスする権限を要求しています。"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s(%2$s)が通知を表示する権限を要求しています。"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s(%2$s)がカメラを使用する権限を要求しています。"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "ქუქი-ფაილების გაზიარება ვებ-პროგრამებს შორის"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "იწყება ჩამოტვირთვა..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s ითხოვს თქვენს ლოკაციას"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "უპირატესობის დამახსოვრება"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) ცდილობს შეინახოს დიდი მოცულობის მონაცემები თქვენს მოწყობილობაში, ინტერნეტში გამოსაყენებლად"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) ითხოვს მონაცემების თქვენს მოწყობილობაში შენახვის ნებართვას, ინტერნეტში მათ გამოსაყენებლად"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) ითხოვს თქვენს ლოკაციაზე წვდომის ნებართვას"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) ითხოვს შეტყობინებების ჩვენების ნებართვას"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) ითხოვს თქვენი კამერის გამოყენების ნებართვას"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Веб-бағдарламалар арасында cookies файлдарымен бөлісу"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Жүктеу басталуда..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s орныңызды сұрайды"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Басымдығын еске сақтау"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) үлкен көлемдегі деректерді құрылғыңызда желіден тыс пайдалану үшін сақтауда"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) желіден тыс пайдалану үшін деректерді құрылғыда сақтау рұқсатын сұрауда"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) орналасқан орныңызға кіру рұқсатын сұрауда"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) хабарландыруларды көрсетуге рұқсат сұрауда"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) камераңызды пайдалану рұқсатын сұрауда"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "웹 애플리케이션간에 쿠키 공유"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "다운로드를 시작하는 중..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s이(가) 현재 위치 정보를 요청합니다"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "설정을 기억합니다"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s(%2$s)이(가) 오프라인에서 사용하기 위해 용량이 큰 데이터를 내 디바이스에 저장하려는 중입니다"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s(%2$s)이(가) 오프라인에서 사용하기 위해 데이터를 내 디바이스에 저장할 권한을 요청하고 있습니다"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s(%2$s)이(가) 내 위치 정보를 수집할 수 있는 권한을 요청하고 있습니다"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s(%2$s)이(가) 알림을 표시할 수 있는 권한을 요청하고 있습니다"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s(%2$s)이(가) 카메라를 사용할 수 있는 권한을 요청하고 있습니다"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Bendrinti slapukus tarp žiniatinklio programų"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Pradeda siųsti..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s užklausų jūsų vietai"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Įsiminti nuostatą"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) bando išsaugoti didelį duomenų kiekį jūsų įrenginyje, kad galėtų jais naudotis atsijungus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) prašo leidimo išsaugoti duomenis jūsų įrenginyje ir naudotis jais atsijungus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) prašo leidimo nustatyti jūsų vietą"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) prašo leidimo parodyti pranešimus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) prašo leidimo naudoti jūsų fotoaparatą"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Kopīgot sīkfailus starp tīmekļa programmām"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Sāk lejupielādi..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s pieprasa jūsu atrašanās vietu"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Atcerēties preferenci"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) mēģina jūsu ierīcē saglabāt lielu datu apjomu lietošanai bezsaistē"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) pieprasa atļauju jūsu ierīcē saglabāt datus lietošanai bezsaistē"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) pieprasa atļauju piekļūt jūsu atrašanās vietai"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) pieprasa atļauju rādīt paziņojumus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) pieprasa atļauju izmantot jūsu kameru"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Дели колачиња меѓу веб-апликации"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Почнува преземање..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s барања за вашата локација"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Запомни преференци"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) се обидува да сочува големо количество податоци на уредот за користење без интернет"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) бара дозвола да зачувува податоци на уредот за користење без интернет"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) бара дозвола да пристапи кон Вашата локација"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) бара дозвола да покажува известувања"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) бара дозвола да ја користи Вашата камера"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Del informasjonskapsler mellom webprogrammer"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Starter nedlasting..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s forespør din plassering"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Husk preferanse"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) forsøker å lagre store mengder data på enheten din for bruk i frakoblet modus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) ber om tillatelse til å lagre data på enheten din for bruk i frakoblet modus"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) ber om tillatelse til å få tilgang til plasseringen din"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) ber om tillatelse til å vise varsler"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) ber om tillatelse til å bruke kameraet ditt"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Cookies delen tussen webapps"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Downloaden starten..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s vraagt om uw locatie"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Voorkeur onthouden"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) probeert een grote hoeveelheid gegevens op uw apparaat op te slaan voor offline gebruik"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) vraagt toestemming om gegevens op uw apparaat op te slaan voor offline gebruik"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) vraagt toestemming voor toegang tot uw locatie"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) vraagt toestemming voor het weergeven van meldingen"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) vraagt toestemming om uw camera te gebruiken"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Udostępniaj pliki cookie pomiędzy aplikacjami internetowymi"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Rozpoczynanie pobierania..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "Witryna %s żąda dostępu do lokalizacji"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Zapamiętaj preferencje"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) próbuje zapisać dużą ilość danych na Twoim urządzeniu do korzystania offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) żąda zezwolenia na zapisanie danych na Twoim urządzeniu do korzystania offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) żąda zezwolenia na dostęp do Twojej lokalizacji"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) żąda zezwolenia na pokazanie powiadomień"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) żąda zezwolenia na korzystanie z Twojego aparatu"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Compartilhar cookies entre apps da web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Iniciando download..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s pede a sua localização"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Lembrar preferência"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está tentando armazenar uma grande quantidade de dados no seu dispositivo para uso offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está solicitando permissão para armazenar dados no seu dispositivo para uso offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) está solicitando permissão para acessar sua localização"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) está solicitando permissão para exibir notificações"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) está solicitando permissão para usar a câmera"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Partilhar cookies entre aplicações web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "A iniciar transferência..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s pede a sua localização"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Lembrar preferência"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está a tentar guardar uma grande quantidade de dados no seu dispositivo para utilização offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) está a pedir permissão para guardar uma grande quantidade de dados no seu dispositivo para utilização offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) está a pedir permissão para aceder à sua localização"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) está a pedir permissão para mostrar notificações"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) está a pedir permissão para utilizar a sua câmara"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Se partajează cookie-urile între aplicaţii web"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Se începe descărcarea..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s solicită locaţia dvs."
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Reţinere preferinţe"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) încearcă să salveze un volum mare de date pe dispozitivul dvs. pentru utilizarea offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) solicită permisiunea de a salva date pe dispozitivul dvs. pentru utilizarea offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) solicită permisiunea de a vă accesa locaţia"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) solicită permisiunea de a afişa notificări"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) solicită permisiunea de a vă utiliza camera foto"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Обмен cookie между веб-приложениями"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Начало загрузки..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s запрашивает сведения о вашем местоположении"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Запомнить настройки"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) пытается сохранить большой объем данных на устройстве для использования в автономном режиме"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) запрашивает разрешение на хранение данных на устройстве для использования в автономном режиме"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) запрашивает разрешение на доступ к местоположению"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) запрашивает разрешение на отображение уведомлений"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) запрашивает разрешение на использование камеры"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Zdieľať súbory cookie medzi webovými aplikáciami"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Spúšťa sa sťahovanie..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s žiada o vaše umiestnenie"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Zapamätať predvoľbu"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) sa pokúša uložiť veľké množstvo údajov do vášho zariadenia na používanie v režime offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) žiada o povolenie uložiť údaje do vášho zariadenia na používanie v režime offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) žiada o povolenie na prístup k vášmu umiestneniu"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) žiada o povolenie zobrazovať oznámenia"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) žiada o povolenie používať váš fotoaparát"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Skupna raba piškotkov med spletnimi programi"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Začenjam prenos ..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s zahteva vašo lokacijo"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Zapomni si prednostne nastavitve"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) poskuša shraniti veliko količino podatkov v vašo napravo za uporabo brez povezave"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) zahteva dovoljenje za shranjevanje podatkov v vašo napravo za uporabo brez povezave"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) zahteva dovoljenje za dostop do vaše lokacije"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) zahteva dovoljenje za prikaz obvestil"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) zahteva dovoljenje za uporabo kamere"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Deli kolačiće između web aplikacija"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Počinje preuzimanje..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s traži tvoju lokaciju"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Zapamti željenu vrednost"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) pokušava da sačuva veliku količinu podataka na tvoj uređaj za offline korišćenje"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) traži dozvolu da sačuva podatke na tvoj uređaj za offline korišćenje"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) traži dozvolu za pristup tvojoj lokaciji"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) traži dozvolu za prikazivanje obaveštenja"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) traži dozvolu za korišćenje tvoje kamere"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Dela cookies mellan webbprogram"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Startar hämtning..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s begär uppgifter om din plats"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Kom ihåg preferens"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) försöker att lagra en stor mängd data på din enhet för användning offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) begär tillstånd för att lagra en stor mängd data på din enhet för användning offline"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) begär tillstånd om åtkomst till din plats"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) begär tillstånd för att visa meddelanden"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) begär tillstånd för att använda kameran"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Çerezleri web uygulamaları arasında paylaş"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "İndirme başlıyor..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s konumunuzu istiyor"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Tercihi hatırla"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) çevrim dışı kullanım için cihazınıza büyük miktarda veri saklamayı deniyor"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) çevrim dışı kullanım için cihazınıza veri depolamak üzere izin istiyor"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) konumunuza erişmek için izin istiyor"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) bildirimleri göstermek için izin istiyor"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) kameranızı kullanmak için izin istiyor"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Спільний доступ до cookies для Інтернет-програм"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Початок завантаження..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s запитує ваше розташування"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Запам’ятати параметр"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) намагається зберегти великий об'єм даних на пристрої для автономного використання"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) запитує дозвіл на збереження даних на пристрої для автономного використання"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) запитує дозвіл на отримання доступу до вашого розташування"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) запитує дозвіл на відображення сповіщень"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) запитує дозвіл на використання камери"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "Veb-ilovalar o‘rtasidagi cookie-fayllarni ulashing"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "Yuklab olish boshlanmoqda..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s Sizning joylashuvingizni talab qiladi"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "Eslab qolish afzalligi"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) qurilmangizga offlayn foydalanish uchun katta hajmdagi ma’lumotni saqlashga urinmoqda"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) qurilmangizga offlayn foydalanish uchun ma’lumotni saqlashga ruxsat so‘ramoqda"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) joylashuvingizga kirish uchun ruxsat so‘ramoqda"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) bildirishnomalarni ko‘rsatish uchun ruxsat so‘ramoqda"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) kamerangizdan foydalanish uchun ruxsat so‘ramoqda"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "在网络应用程序之间共享 cookies"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "正在开始下载..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s请求您的位置"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "记住首选项"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在尝试在您的设备上存储大量数据用于离线使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在请求许可在您的设备上存储数据用于离线使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) 正在请求许可访问您的位置"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) 正在请求许可显示通知"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) 正在请求许可使用您的相机"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "在網頁應用程式中分享 cookie"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "正在開始下載..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s請求你的位置"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "記住偏好"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正嘗試在您的裝置上儲存大容量數據作為離線使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在請求權限以於您的裝置上儲存數據作為離線使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) 正在請求授權以存取您的位置"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) 正在請求授權以顯示通知"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) 正在請求授權以使用您的相機"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "在网络应用程序之间共享 cookies"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "正在开始下载..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s请求您的位置"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "记住首选项"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在尝试在您的设备上存储大量数据用于离线使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在请求许可在您的设备上存储数据用于离线使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) 正在请求许可访问您的位置"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) 正在请求许可显示通知"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) 正在请求许可使用您的相机"
+
msgid "IDS_ST_BODY_SHARE_COOKIES_BETWEEN_WEB_APPS"
msgstr "在網頁應用程式中分享 cookie"
+msgid "IDS_BR_POP_STARTING_DOWNLOAD_ING"
+msgstr "正在開始下載..."
+
msgid "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION"
msgstr "%s請求您的位置"
msgid "IDS_BR_BODY_REMEMBER_PREFERENCE"
msgstr "記住偏好"
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正嘗試在您的裝置上儲存大容量資料作為離線使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE"
+msgstr "%1$s (%2$s) 正在請求權限以於您的裝置上儲存資料作為離線使用"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION"
+msgstr "%1$s (%2$s) 正在請求授權以存取您的位置"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS"
+msgstr "%1$s (%2$s) 正在請求授權以顯示通知"
+
+msgid "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA"
+msgstr "%1$s (%2$s) 正在請求授權以使用您的相機"
+
# @version 1.0
#
+ADD_DEFINITIONS("-DWRT_LOG")
+
# "smack-labeling-support-static" static library -------------------------------
SET(SMACK_LABELING_SUPPORT_STATIC "smack-labeling-support-static")
PKG_CHECK_MODULES(SMACK_LABELING_SUPPORT_DEPS
# ------------------------------------------------------------------------------
#it is here, so no INCLUDE_DIRS and DEFINITIONS are passed there
-ADD_SUBDIRECTORY(view)
SET(WRT_SRC_DIR
${PROJECT_SOURCE_DIR}/src
)
SET(WRT_CORE_BASE_SOURCES
+ ${WRT_SRC_DIR}/domain/application_data.cpp
${WRT_SRC_DIR}/domain/widget_data_types.cpp
${WRT_SRC_DIR}/domain/widget_deserialize_model.cpp
${WRT_SRC_DIR}/domain/localization_setting.cpp
COMPILE_FLAGS "-include profiling_util.h")
TARGET_LINK_LIBRARIES(${TARGET_WRT_ENGINE_STATIC}
- ${TARGET_WRT_DAO_RW_LIB}
${PROF_LIB}
)
DESTINATION include/${PROJECT_NAME}
)
+ADD_SUBDIRECTORY(view)
ADD_SUBDIRECTORY(api_new)
ADD_SUBDIRECTORY(wrt-client)
ADD_SUBDIRECTORY(wrt-launcher)
${PROJECT_SOURCE_DIR}/src/api_new/core_module.cpp
${PROJECT_SOURCE_DIR}/src/api_new/runnable_widget_object.cpp
${PROJECT_SOURCE_DIR}/src/api_new/runnable_widget_object_state.cpp
- ${PROJECT_SOURCE_DIR}/src/api_new/ewk_context_manager.cpp
)
SET_TARGET_PROPERTIES(${TARGET_CORE_MODULE_LIB} PROPERTIES
)
PKG_CHECK_MODULES(CORE_MODULE_DEP
- wrt-plugin-js-overlay
dpl-efl
wrt-popup-wrt-runner
REQUIRED
)
PKG_CHECK_MODULES(SYS_CORE_MODULE_DEP
- ewebkit2
libprivilege-control
cert-svc
REQUIRED
INCLUDE_DIRECTORIES( SYSTEM ${SYS_CORE_MODULE_DEP_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(${TARGET_CORE_MODULE_LIB}
+# include all symbols that could be used by wrt-client
+ "-Wl,--whole-archive"
${TARGET_WRT_ENGINE_STATIC}
+ "-Wl,--no-whole-archive"
${WRT_ENGINE_DEPS_LIBRARIES}
${SYS_WRT_ENGINE_DEPS_LIBRARIES}
${TARGET_VIEW_MODULE_LIB}
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
#include <dpl/wrt-dao-ro/global_dao_read_only.h>
-#include <EWebKit2.h>
-
IMPLEMENT_SINGLETON(WRT::CoreModule)
namespace {
{
public:
- CoreModuleImpl() : m_initialized(false), m_ewkContext(NULL)
+ CoreModuleImpl() : m_initialized(false)
{
LogDebug("enter");
}
private:
bool m_initialized;
- Ewk_Context* m_ewkContext;
};
CoreModule::CoreModule() : m_impl(new CoreModuleImpl())
#include <dpl/optional_typedefs.h>
#include <memory>
-#include <EWebKit2.h>
-
namespace WRT {
class CoreModuleImpl; // forward declaration
#define RUNNABLE_WIDGET_OBJECT_INTERFACE_H_
#include <dpl/wrt-dao-ro/wrt_db_types.h>
-#include <ewk_context.h>
#include <dpl/exception.h>
#include <user_delegates.h>
+class Ewk_Context; //forward declaration
+
namespace WRT {
/**
* limitations under the License.
*/
/**
- * @file core_module.cpp
+ * @file runnable_widget_object.cpp
* @author Przemyslaw Ciezkowski (p.ciezkowski@samsung.com)
* @version 1.0
* @brief File contains defitinions of RunnableWidgetObject implementation.
#include <signal.h>
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
#include <runnable_widget_object_state.h>
-#include <popup-runner/PopupInvoker.h>
-#include "ewk_context_manager.h"
namespace { //Anonymous
const unsigned int UID_ROOT = 0;
RunnableWidgetObject::RunnableWidgetObject(WidgetModelPtr &model) :
m_widgetModel(model),
m_view(ViewModule::createView()),
- m_contextManagerFactoryMethod(makeContextManagerFactoryMethod<EwkContextManager>())
+ m_contextManagerFactoryMethod(ViewModule::makeContextManagerFactoryMethod())
{
//set initial state of runnable object
m_guardstate = std::shared_ptr<State::RunnableWidgetObjectState>(
m_view = ptr;
}
-void RunnableWidgetObject::setContextManagerFactoryMethod(ContextManagerFactoryMethod method)
+void RunnableWidgetObject::setContextManagerFactoryMethod(
+ ViewModule::ContextManagerFactoryMethod method)
{
LogDebug("Setting ContextManagerFactoryMethod");
m_contextManagerFactoryMethod = method;
void RunnableWidgetObject::setNewState(
std::shared_ptr<State::RunnableWidgetObjectState> sptr)
{
- LogInfo("RunnableWidgetObject changes state to: " << sptr->toString());
+ LogDebug("RunnableWidgetObject changes state to: " << sptr->toString());
m_guardstate = sptr;
}
}
}
+#include "i_runnable_widget_object.h"
+
#include <string>
#include <memory>
-#include <EWebKit2.h>
#include <widget_model.h>
#include <dpl/exception.h>
#include <i_view_module.h>
-#include "ewk_context_manager.h"
-#include "i_runnable_widget_object.h"
+#include <i_context_manager.h>
namespace WRT {
class RunnableWidgetObject : public IRunnableWidgetObject
void FireJavascriptEvent(int event, void* data);
void setViewModule(ViewModule::IViewModulePtr ptr);
- void setContextManagerFactoryMethod(ContextManagerFactoryMethod method);
+ void setContextManagerFactoryMethod(ViewModule::ContextManagerFactoryMethod method);
private:
bool CheckWACTestCertififedWidget();
WidgetModelPtr m_widgetModel;
ViewModule::IViewModulePtr m_view;
std::shared_ptr<State::RunnableWidgetObjectState> m_guardstate;
- ContextManagerPtr m_ewkContextManager;
+ ViewModule::ContextManagerPtr m_ewkContextManager;
//factor method to be used for creation of context manager when needed
- ContextManagerFactoryMethod m_contextManagerFactoryMethod;
+ ViewModule::ContextManagerFactoryMethod m_contextManagerFactoryMethod;
friend class State::StateChange;
};
typedef DPL::FastDelegate1<bool, void> ResetCB;
typedef DPL::FastDelegate1<Evas_Object*, void> BufferUnsetCB;
typedef DPL::FastDelegate1<Evas_Object*, void> BufferSetCB;
-typedef DPL::FastDelegate1<bool, void> ToggleFullscreenCB;
+typedef DPL::FastDelegate2<Evas_Object*, bool, void> EnterFullscreenCB;
+typedef DPL::FastDelegate1<Evas_Object*, void> ExitFullscreenCB;
typedef DPL::FastDelegate1<bool, void> EditorclientImeCB;
typedef DPL::FastDelegate1<int, void> OrientationCB;
typedef DPL::FastDelegate1<const std::string&, void> HWkeyCB;
ResetCB reset;
BufferUnsetCB bufferUnset;
BufferSetCB bufferSet;
- ToggleFullscreenCB toggleFullscreen;
+ EnterFullscreenCB enterFullscreen;
+ ExitFullscreenCB exitFullscreen;
OrientationCB setOrientation;
HWkeyCB hwkey;
};
return false;
}
- LogInfo("Encoded Bundle : " << m_encodedBundle);
+ LogDebug("Encoded Bundle : " << m_encodedBundle);
return true;
}
#include <widget_data_types.h>
+#include <stdlib.h>
+
#include <dpl/foreach.h>
+#include <dpl/log/secure_log.h>
+
+namespace {
+const char* const WRT_WIDGET_DATA_TYPES_LOG_ENABLE =
+ "WRT_WIDGET_DATA_TYPES_LOG_ENABLE";
+}
WidgetAccessList::WidgetAccessList() : m_isAccessAll(false)
{}
m_BackgroundSupport(BackgroundSupport_Disable),
m_ProgressbarPresence(ProgressBar_Disable),
m_HWkeyEvent(HWkeyEvent_Enable),
- m_Accessibility(Accessibility_Enable)
-{}
+ m_Accessibility(Accessibility_Enable),
+ m_SoundMode(SoundMode_Shared)
+{
+ m_logEnable = (getenv(WRT_WIDGET_DATA_TYPES_LOG_ENABLE) != NULL);
+}
WidgetSettingList::WidgetSettingList(WrtDB::WidgetSettings &widgetSettings)
{
+ using namespace TizenSetting::Name;
+ using namespace TizenSetting::Value;
+
+ m_logEnable = (getenv(WRT_WIDGET_DATA_TYPES_LOG_ENABLE) != NULL);
+
m_RotationLock = Screen_Portrait;
m_IndicatorPresence = Indicator_Enable;
m_BackButtonPresence = BackButton_Disable;
m_ProgressbarPresence = ProgressBar_Disable;
m_HWkeyEvent = HWkeyEvent_Enable;
m_Accessibility = Accessibility_Enable;
+ m_SoundMode = SoundMode_Shared;
- FOREACH(it, widgetSettings)
- {
+ FOREACH(it, widgetSettings) {
DPL::String name = it->settingName;
DPL::String value = it->settingValue;
- if (name == SETTING_NAME_SCREEN_ORIENTATION) {
- if (value == SETTING_VALUE_SCREEN_ORIENTATION_PORTRAIT) {
+ if (name == SCREEN_ORIENTATION) {
+ if (value == SCREEN_ORIENTATION_PORTRAIT) {
m_RotationLock = Screen_Portrait;
- } else if (value ==
- SETTING_VALUE_SCREEN_ORIENTATION_LANDSCAPE)
- {
+ } else if (value == SCREEN_ORIENTATION_LANDSCAPE) {
m_RotationLock = Screen_Landscape;
- } else if (value ==
- SETTING_VALUE_SCREEN_ORIENTATION_AUTO_ROTATION)
- {
+ } else if (value == SCREEN_ORIENTATION_AUTO_ROTATION) {
m_RotationLock = Screen_AutoRotation;
} else {
- LogError("Invalid screen orientation value!! [" <<
- value << "]");
+ displayError(name, value);
m_RotationLock = Screen_Portrait;
}
- } else if (name == SETTING_NAME_INDICATOR_PRESENCE) {
- if (value == SETTING_VALUE_INDICATOR_PRESENCE_ENALBE) {
+ } else if (name == INDICATOR_PRESENCE) {
+ if (value == INDICATOR_PRESENCE_ENALBE) {
m_IndicatorPresence = Indicator_Enable;
- } else if (value == SETTING_VALUE_INDICATOR_PRESENCE_DISABLE) {
+ } else if (value == INDICATOR_PRESENCE_DISABLE) {
m_IndicatorPresence = Indicator_Disable;
} else {
- LogError("Invalid indicator presence value!! [" <<
- value << "]");
+ displayError(name, value);
m_IndicatorPresence = Indicator_Enable;
}
- } else if (name == SETTING_NAME_BACKBUTTON_PRESENCE) {
- if (value == SETTING_VALUE_BACKBUTTON_PRESENCE_ENALBE) {
+ } else if (name == BACKBUTTON_PRESENCE) {
+ if (value == BACKBUTTON_PRESENCE_ENALBE) {
m_BackButtonPresence = BackButton_Enable;
- } else if (value ==
- SETTING_VALUE_BACKBUTTON_PRESENCE_DISABLE)
- {
+ } else if (value == BACKBUTTON_PRESENCE_DISABLE) {
m_BackButtonPresence = BackButton_Disable;
} else {
- LogError("Invalid backbutton presence value!! [" <<
- value << "]");
+ displayError(name, value);
m_BackButtonPresence = BackButton_Disable;
}
- } else if (name == SETTING_NAME_CONTEXT_MENU)
- {
- if (value == SETTING_VALUE_ENABLE) {
+ } else if (name == CONTEXT_MENU) {
+ if (value == CONTEXT_MENU_ENABLE) {
m_ContextMenu = ContextMenu_Enable;
- } else if (value == SETTING_VALUE_DISABLE) {
+ } else if (value == CONTEXT_MENU_DISABLE) {
m_ContextMenu = ContextMenu_Disable;
} else {
- LogError("Invalid contextmenu value!! [" << value << "]");
+ displayError(name, value);
m_ContextMenu = ContextMenu_Enable;
}
- } else if (name == SETTING_NAME_ENCRYPTION) {
- if (value == SETTING_VALUE_ENCRYPTION_ENABLE) {
+ } else if (name == ENCRYPTION) {
+ if (value == ENCRYPTION_ENABLE) {
m_Encryption = Encryption_Enable;
- } else if (value ==
- SETTING_VALUE_ENCRYPTION_DISABLE)
- {
+ } else if (value == ENCRYPTION_DISABLE) {
m_Encryption = Encryption_Disable;
} else {
- LogError("Invalid encryption value!! [" << value << "]");
+ displayError(name, value);
m_Encryption = Encryption_Disable;
}
- } else if (name == SETTING_NAME_BACKGROUND_SUPPORT) {
- if (value == SETTING_VALUE_ENABLE) {
+ } else if (name == BACKGROUND_SUPPORT) {
+ if (value == ENABLE) {
m_BackgroundSupport = BackgroundSupport_Enable;
- } else if (value == SETTING_VALUE_DISABLE) {
+ } else if (value == DISABLE) {
m_BackgroundSupport = BackgroundSupport_Disable;
} else {
- LogError("Invalid background-support value!! [" <<
- value << "]");
+ displayError(name, value);
m_BackgroundSupport = BackgroundSupport_Disable;
}
- } else if (name == SETTING_NAME_USER_AGENT) {
+ } else if (name == USER_AGENT) {
DPL::OptionalString userAgent = value;
if (!userAgent.IsNull()) {
m_UserAgent = DPL::ToUTF8String(*userAgent);
}
- } else if (name == SETTING_NAME_PROGRESSBAR_PRESENCE) {
- if (value == SETTING_VALUE_PROGRESSBAR_PRESENCE_ENABLE) {
+ } else if (name == PROGRESSBAR_PRESENCE) {
+ if (value == PROGRESSBAR_PRESENCE_ENABLE) {
m_ProgressbarPresence = ProgressBar_Enable;
- } else if (value == SETTING_VALUE_PROGRESSBAR_PRESENCE_DISABLE) {
+ } else if (value == PROGRESSBAR_PRESENCE_DISABLE) {
m_ProgressbarPresence = ProgressBar_Disable;
} else {
- LogError("Invalid progressbar-presence value!! [" <<
- value << "]");
+ displayError(name, value);
m_ProgressbarPresence = ProgressBar_Disable;
}
- } else if (name == SETTING_NAME_HWKEY_EVENT) {
- if (value == SETTING_VALUE_HWKEY_EVENT_ENABLE) {
+ } else if (name == HWKEY_EVENT) {
+ if (value == HWKEY_EVENT_ENABLE) {
m_HWkeyEvent = HWkeyEvent_Enable;
- } else if (value == SETTING_VALUE_HWKEY_EVENT_DISABLE) {
+ } else if (value == HWKEY_EVENT_DISABLE) {
m_HWkeyEvent = HWkeyEvent_Disable;
} else {
- LogError("Invalid hwkey-event value!! [" << value << "]");
+ displayError(name, value);
m_HWkeyEvent = HWkeyEvent_Enable;
}
- } else if (name == SETTING_NAME_ACCESSIBILITY) {
- if (value == SETTING_VALUE_ACCESSIBILITY_ENABLE) {
+ } else if (name == ACCESSIBILITY) {
+ if (value == ACCESSIBILITY_ENABLE) {
m_Accessibility = Accessibility_Enable;
- } else if (value == SETTING_VALUE_ACCESSIBILITY_DISABLE) {
+ } else if (value == ACCESSIBILITY_DISABLE) {
m_Accessibility = Accessibility_Disable;
} else {
- LogError("Invalid accessibility value!! [" << value << "]");
+ displayError(name, value);
m_Accessibility = Accessibility_Enable;
}
+ } else if (name == SOUND_MODE) {
+ if (value == SOUND_MODE_SAHRED) {
+ m_SoundMode = SoundMode_Shared;
+ } else if (value == SOUND_MODE_EXCLUSIVE) {
+ m_SoundMode = SoundMode_Exclusive;
+ } else {
+ displayError(name, value);
+ m_SoundMode = SoundMode_Shared;
+ }
} else {
- LogError("Invalid setting name!! [" << name << "]");
+ displayError(name, value);
}
}
-
}
WidgetSettingScreenLock WidgetSettingList::getRotationValue() const
{
- LogDebug("m_RotationLock: " << m_RotationLock);
-
+ if (m_logEnable) {_D("m_RotationLock: %d", m_RotationLock);}
return m_RotationLock;
}
WidgetSettingIndicatorPresence WidgetSettingList::getIndicatorPresence() const
{
- LogDebug("m_IndicatorPresence: " << m_IndicatorPresence);
-
+ if (m_logEnable) {_D("m_IndicatorPresence: %d", m_IndicatorPresence);}
return m_IndicatorPresence;
}
WidgetSettingBackButtonPresence WidgetSettingList::getBackButtonPresence()
const
{
- LogDebug("m_BackButtonPresence: " << m_BackButtonPresence);
-
+ if (m_logEnable) {_D("m_BackButtonPresence: %d", m_BackButtonPresence);}
return m_BackButtonPresence;
}
WidgetSettingContextMenu WidgetSettingList::getContextMenu() const
{
- LogDebug("m_ContextMenu: " << m_ContextMenu);
-
+ if (m_logEnable) {_D("m_ContextMenu: %d", m_ContextMenu);}
return m_ContextMenu;
}
WidgetSettingEncryption WidgetSettingList::getEncryption() const
{
- LogDebug("m_Encryption: " << m_Encryption);
-
+ if (m_logEnable) {_D("m_Encryption: %d", m_Encryption);}
return m_Encryption;
}
WidgetSettingBackgroundSupport WidgetSettingList::getBackgroundSupport() const
{
- LogDebug("m_BackgroundSupport: " << m_BackgroundSupport);
-
+ if (m_logEnable) {_D("m_BackgroundSupport: %d", m_BackgroundSupport);}
return m_BackgroundSupport;
}
-bool WidgetSettingList::isEncrypted() const
-{
- LogDebug("m_Encryption: " << m_Encryption);
-
- if (m_Encryption == Encryption_Enable) {
- return true;
- }
- return false;
-}
-
std::string WidgetSettingList::getUserAgent() const
{
- LogDebug("m_UserAgent: " << m_UserAgent);
-
+ if (m_logEnable) {_D("m_UserAgent: %s", m_UserAgent.c_str());}
return m_UserAgent;
}
WidgetSettingProgressBarPresence WidgetSettingList::getProgressBarPresence() const
{
- LogDebug("m_ProgressbarPresence: " << m_ProgressbarPresence);
-
+ if (m_logEnable) {_D("m_ProgressbarPresence: %d", m_ProgressbarPresence);}
return m_ProgressbarPresence;
}
WidgetSettingHWkeyEventPresence WidgetSettingList::getHWkeyEvent() const
{
- LogDebug("m_HWkeyEvent: " << m_HWkeyEvent);
-
+ if (m_logEnable) {_D("m_HWkeyEvent: %d", m_HWkeyEvent);}
return m_HWkeyEvent;
}
WidgetSettingAccessibility WidgetSettingList::getAccessibility() const
{
- LogDebug("m_Accessibility: " << m_Accessibility);
-
+ if (m_logEnable) {_D("m_Accessibility: %d", m_Accessibility);}
return m_Accessibility;
}
+WidgetSettingSoundMode WidgetSettingList::getSoundMode() const
+{
+ if (m_logEnable) {_D("m_SoundMode: %d", m_SoundMode);}
+ return m_SoundMode;
+}
+
bool WidgetSettingList::operator ==(const WidgetSettingList& other) const
{
return m_RotationLock == other.m_RotationLock &&
m_UserAgent == other.m_UserAgent &&
m_ProgressbarPresence == other.m_ProgressbarPresence &&
m_HWkeyEvent == other.m_HWkeyEvent &&
- m_Accessibility == other.m_Accessibility;
+ m_Accessibility == other.m_Accessibility &&
+ m_SoundMode == other.m_SoundMode;
+}
+
+void WidgetSettingList::displayError(const DPL::String& name,
+ const DPL::String& value)
+{
+ _W("Invalid \"%s\" setting value \"%s\"",
+ DPL::ToUTF8String(name).c_str(),
+ DPL::ToUTF8String(value).c_str());
}
bool m_isAccessAll;
};
-static const DPL::String SETTING_NAME_SCREEN_ORIENTATION =
- L"screen-orientation";
-static const DPL::String SETTING_NAME_INDICATOR_PRESENCE =
- L"indicator-presence";
-static const DPL::String SETTING_NAME_BACKBUTTON_PRESENCE =
- L"backbutton-presence";
- static const DPL::String SETTING_NAME_CONTEXT_MENU =
- L"context-menu";
-static const DPL::String SETTING_NAME_BACKGROUND_SUPPORT =
- L"background-support";
-static const DPL::String SETTING_NAME_USER_AGENT =
- L"user-agent";
-static const DPL::String SETTING_NAME_PROGRESSBAR_PRESENCE =
- L"progressbar-presence";
-static const DPL::String SETTING_NAME_HWKEY_EVENT =
- L"hwkey-event";
-static const DPL::String SETTING_NAME_ACCESSIBILITY =
- L"accessibility";
-static const DPL::String SETTING_VALUE_ENABLE =
- L"enable";
-static const DPL::String SETTING_VALUE_DISABLE =
- L"disable";
-static const DPL::String SETTING_NAME_ENCRYPTION =
- L"encryption";
-static const DPL::String SETTING_VALUE_SCREEN_ORIENTATION_PORTRAIT =
- L"portrait";
-static const DPL::String SETTING_VALUE_SCREEN_ORIENTATION_LANDSCAPE =
- L"landscape";
-static const DPL::String SETTING_VALUE_SCREEN_ORIENTATION_AUTO_ROTATION =
- L"auto-rotation";
-static const DPL::String SETTING_VALUE_INDICATOR_PRESENCE_ENALBE =
- L"enable";
-static const DPL::String SETTING_VALUE_INDICATOR_PRESENCE_DISABLE =
- L"disable";
-static const DPL::String SETTING_VALUE_BACKBUTTON_PRESENCE_ENALBE =
- L"enable";
-static const DPL::String SETTING_VALUE_BACKBUTTON_PRESENCE_DISABLE =
- L"disable";
-static const DPL::String SETTING_VALUE_ENCRYPTION_ENABLE =
- L"enable";
-static const DPL::String SETTING_VALUE_ENCRYPTION_DISABLE =
- L"disable";
-static const DPL::String SETTING_VALUE_PROGRESSBAR_PRESENCE_ENABLE =
- L"enable";
-static const DPL::String SETTING_VALUE_PROGRESSBAR_PRESENCE_DISABLE =
- L"disable";
-static const DPL::String SETTING_VALUE_HWKEY_EVENT_ENABLE =
- L"enable";
-static const DPL::String SETTING_VALUE_HWKEY_EVENT_DISABLE =
- L"disable";
-static const DPL::String SETTING_VALUE_ACCESSIBILITY_ENABLE =
- L"enable";
-static const DPL::String SETTING_VALUE_ACCESSIBILITY_DISABLE =
- L"disable";
+namespace TizenSetting {
+namespace Name {
+const DPL::String SCREEN_ORIENTATION = L"screen-orientation";
+const DPL::String INDICATOR_PRESENCE = L"indicator-presence";
+const DPL::String BACKBUTTON_PRESENCE = L"backbutton-presence";
+const DPL::String CONTEXT_MENU = L"context-menu";
+const DPL::String BACKGROUND_SUPPORT = L"background-support";
+const DPL::String USER_AGENT = L"user-agent";
+const DPL::String PROGRESSBAR_PRESENCE = L"progressbar-presence";
+const DPL::String HWKEY_EVENT = L"hwkey-event";
+const DPL::String ACCESSIBILITY = L"accessibility";
+const DPL::String SOUND_MODE = L"sound-mode";
+const DPL::String ENCRYPTION = L"encryption";
+} // namespace Name
+namespace Value {
+const DPL::String ENABLE = L"enable";
+const DPL::String DISABLE = L"disable";
+const DPL::String SCREEN_ORIENTATION_PORTRAIT = L"portrait";
+const DPL::String SCREEN_ORIENTATION_LANDSCAPE = L"landscape";
+const DPL::String SCREEN_ORIENTATION_AUTO_ROTATION = L"auto-rotation";
+const DPL::String INDICATOR_PRESENCE_ENALBE = ENABLE;
+const DPL::String INDICATOR_PRESENCE_DISABLE = DISABLE;
+const DPL::String BACKBUTTON_PRESENCE_ENALBE = ENABLE;
+const DPL::String BACKBUTTON_PRESENCE_DISABLE = DISABLE;
+const DPL::String CONTEXT_MENU_ENABLE = ENABLE;
+const DPL::String CONTEXT_MENU_DISABLE = DISABLE;
+const DPL::String ENCRYPTION_ENABLE = ENABLE;
+const DPL::String ENCRYPTION_DISABLE = DISABLE;
+const DPL::String PROGRESSBAR_PRESENCE_ENABLE = ENABLE;
+const DPL::String PROGRESSBAR_PRESENCE_DISABLE = DISABLE;
+const DPL::String HWKEY_EVENT_ENABLE = ENABLE;
+const DPL::String HWKEY_EVENT_DISABLE = DISABLE;
+const DPL::String ACCESSIBILITY_ENABLE = ENABLE;
+const DPL::String ACCESSIBILITY_DISABLE = DISABLE;
+const DPL::String SOUND_MODE_SAHRED = L"shared";
+const DPL::String SOUND_MODE_EXCLUSIVE = L"exclusive";
+} // namespace Value
+} // namespace TizenSetting
enum WidgetSettingScreenLock
{
Accessibility_Disable
};
+enum WidgetSettingSoundMode
+{
+ SoundMode_Shared, /* Default */
+ SoundMode_Exclusive
+};
+
class WidgetSettingList
{
public:
WidgetSettingList();
-
WidgetSettingList(WrtDB::WidgetSettings &widgetSettings);
WidgetSettingScreenLock getRotationValue() const;
-
WidgetSettingIndicatorPresence getIndicatorPresence() const;
-
WidgetSettingBackButtonPresence getBackButtonPresence() const;
-
WidgetSettingContextMenu getContextMenu() const;
-
WidgetSettingEncryption getEncryption() const;
-
WidgetSettingBackgroundSupport getBackgroundSupport() const;
-
- bool isEncrypted() const;
-
std::string getUserAgent() const;
-
WidgetSettingProgressBarPresence getProgressBarPresence() const;
-
WidgetSettingHWkeyEventPresence getHWkeyEvent() const;
-
WidgetSettingAccessibility getAccessibility() const;
-
+ WidgetSettingSoundMode getSoundMode() const;
bool operator ==(const WidgetSettingList& other) const;
private:
+ void displayError(const DPL::String& name, const DPL::String& value);
+
+ bool m_logEnable;
WidgetSettingScreenLock m_RotationLock;
WidgetSettingIndicatorPresence m_IndicatorPresence;
WidgetSettingBackButtonPresence m_BackButtonPresence;
WidgetSettingProgressBarPresence m_ProgressbarPresence;
WidgetSettingHWkeyEventPresence m_HWkeyEvent;
WidgetSettingAccessibility m_Accessibility;
+ WidgetSettingSoundMode m_SoundMode;
std::string m_UserAgent;
};
typedef std::shared_ptr<WidgetSettingList> WidgetSettingListPtr;
gettimeofday(&tv, NULL);
sprintf(buff, "%lf", (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0f);
- LogInfo("timestamp: " << buff);
+ LogDebug("timestamp: " << buff);
return std::string(buff);
}
#define WRT_SRC_DOMAIN_WIDGET_STRING_H_
#include <app.h>
+#include <initializer_list>
+#include <string>
+
+#include <dpl/log/secure_log.h>
#define WRT_PS "%s"
+#define WRT_PNS "%d$s"
+
+namespace WrtText {
+inline std::string replacePS(std::initializer_list<std::string> strs) {
+ std::size_t size = strs.size();
+ if (size <= 1 || size >= 10) {
+ return std::string("");
+ }
+
+ std::initializer_list<std::string>::iterator it = strs.begin();
+ std::string ret = *strs.begin();
+ std::string arg = *(++it);
+
+ // %s -> arg
+ std::size_t ps = ret.find(WRT_PS);
+ if (ps != std::string::npos) {
+ ret.replace(ps, std::string(WRT_PS).length(), arg);
+ return ret;
+ }
+
+ // %n$s -> n_arg
+ std::string n = "1";
+ for ( ; it != strs.end(); ++it) {
+ std::string pns = WRT_PNS;
+ pns.replace(1, 1, n);
+ n[0]++;
+ ret.replace(ret.find(pns), 4, (*it).c_str());
+ }
+ return ret;
+}
+}
+
#define WRT_SK_YES dgettext("sys_string", "IDS_COM_SK_YES")
#define WRT_SK_NO dgettext("sys_string", "IDS_COM_SK_NO")
-#define WRT_BODY_PS_REQUESTS_YOUR_LOCATION dgettext("wrt", "IDS_BR_BODY_PS_REQUESTS_YOUR_LOCATION")
+#define WRT_POP_USERMEDIA_PERMISSION dgettext("wrt", "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_USE_YOUR_CAMERA")
+#define WRT_POP_WEB_NOTIFICATION_PERMISSION dgettext("wrt", "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_SHOW_NOTIFICATIONS")
+#define WRT_POP_GEOLOCATION_PERMISSION dgettext("wrt", "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_ACCESS_YOUR_LOCATION")
+#define WRT_POP_WEB_STORAGE_PERMISSION dgettext("wrt", "IDS_BR_POP_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE")
+#define WRT_POP_APPLICATION_CACHE_PERMISSION dgettext("wrt", "IDS_BR_POP_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE")
+#define WRT_POP_STARTING_DOWNLOADING dgettext("wrt", "IDS_BR_POP_STARTING_DOWNLOAD_ING")
+
#define WRT_BODY_REMEMBER_PREFERENCE dgettext("wrt", "IDS_BR_BODY_REMEMBER_PREFERENCE")
-#endif // WRT_SRC_DOMAIN_WIDGET_STRING_H_
\ No newline at end of file
+#endif // WRT_SRC_DOMAIN_WIDGET_STRING_H_
+++ /dev/null
-/*
- * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * 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.
- */
-/**
- * @file wrt_log.h
- * @author Jihoon Chung(jihoon.chung@samsung.com)
- * @version 0.1
- * @brief
- */
-
-#ifndef WRT_SRC_DOMAIN_WRT_LOG_H_
-#define WRT_SRC_DOMAIN_WRT_LOG_H_
-
-#include <dlog.h>
-
-#ifdef WRT_LOG
-#undef LOG_TAG
-#define LOG_TAG "WRT"
-#endif
-
-#ifdef WRT_BUNDLE_LOG
-#undef LOG_TAG
-#define LOG_TAG "WRT_BUNDLE"
-#endif
-
-#ifndef SECURE_SLOGD
-#define SECURE_SLOGD(fmt, arg...) SLOGD(fmt,##arg)
-#endif
-
-#ifndef SECURE_SLOGW
-#define SECURE_SLOGW(fmt, arg...) SLOGW(fmt,##arg)
-#endif
-
-#ifndef SECURE_SLOGE
-#define SECURE_SLOGE(fmt, arg...) SLOGE(fmt,##arg)
-#endif
-
-#define _D(fmt, arg ...) SECURE_SLOGD(fmt,##arg)
-#define _W(fmt, arg ...) SECURE_SLOGW(fmt,##arg)
-#define _E(fmt, arg ...) SECURE_SLOGE(fmt,##arg)
-
-#endif // WRT_SRC_DOMAIN_WRT_LOG_H_
-
# @version 1.0
#
+ADD_DEFINITIONS("-DWRT_PLUGINS_COMMON_LOG")
+
PKG_CHECK_MODULES(WRT_PLUGIN_DEP
wrt-plugin-loading
wrt-plugin-js-overlay
#include "wrt_plugin_module.h"
-#include <dpl/log/log.h>
+#include <dpl/log/secure_log.h>
#include <dpl/string.h>
#include <dpl/assert.h>
#include <plugin_logic.h>
namespace PluginModule {
void init(int widgetHandle)
{
- LogDebug("initializing plugins module");
+ _D("called");
PluginLogicSingleton::Instance().initSession(widgetHandle);
}
const char *encodedBundle,
const char *theme)
{
- LogDebug("starting plugins module with");
- LogDebug("handle: " << widgetHandle);
- LogDebug("context: " << context);
- LogDebug("scale: " << scale);
- LogDebug("Bundle: " << encodedBundle);
- LogDebug("theme: " << theme);
-
PluginLogicSingleton::Instance().startSession(widgetHandle,
context,
scale,
void shutdown()
{
- LogDebug("shuting down plugins module");
+ _D("called");
PluginLogicSingleton::Instance().performLibrariesUnload();
}
void stop(JSGlobalContextRef context)
{
- LogDebug("stopping plugins module");
+ _D("called");
PluginLogicSingleton::Instance().stopSession(context);
}
const char* encodedBundle,
const char* theme)
{
- LogDebug("reset custom properties of window object");
+ _D("called");
PluginLogicSingleton::Instance().setCustomProperties(context,
scale,
encodedBundle,
WrtPlugins::W3C::CustomEventType eventType,
void* data)
{
- LogDebug("dispatching javascript event");
+ _D("called");
PluginLogicSingleton::Instance().dispatchJavaScriptEvent(context,
eventType,
data);
void loadFrame(JSGlobalContextRef context)
{
- LogDebug("load frame into web page (context:" << context << ")");
+ _D("load frame into web page (context: %p)", context);
PluginLogicSingleton::Instance().loadFrame(context);
}
void unloadFrame(JSGlobalContextRef context)
{
- LogDebug("unload frame from web page (context:" << context << ")");
+ _D("unload frame from web page (context: %p)", context);
PluginLogicSingleton::Instance().unloadFrame(context);
}
} // PluginModule
# @file src/view/CMakeLists.txt
# @author Pawel Sikorski (p.sikorski@samsung.com)
-SET(VIEW_MODULE_SOURCES ${PROJECT_SOURCE_DIR}/src/view/view_module.cpp)
-SET(VIEW_COMMON_LIB_STATIC "wrt-view-common")
+SET(VIEW_MODULE_SOURCES
+ ${PROJECT_SOURCE_DIR}/src/view/view_module.cpp
+ ${PROJECT_SOURCE_DIR}/src/view/context_manager.cpp
+)
+SET(TARGET_VIEW_COMMON_LIB_STATIC "wrt-view-common")
ADD_SUBDIRECTORY(common) #ViewModule common library
ADD_SUBDIRECTORY(webkit) #ViewModule based on Webkit2
# @file src/view/common/CMakeLists.txt
# @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
-SET(TARGET_VIEW_COMMON_LIB_STATIC "wrt-view-common")
-
PKG_CHECK_MODULES(SYS_VIEW_COMMON_DEP
wrt-commons-custom-handler-dao-ro
appsvc
)
SET(VIEW_COMMON_SOURCES
- ${PROJECT_SOURCE_DIR}/src/view/common/application_data.cpp
${PROJECT_SOURCE_DIR}/src/view/common/application_launcher.cpp
${PROJECT_SOURCE_DIR}/src/view/common/evas_object.cpp
${PROJECT_SOURCE_DIR}/src/view/common/scheme.cpp
${PROJECT_SOURCE_DIR}/src/view/common/scheme_action_map.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_apps_support.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_custom_header_support.cpp
- ${PROJECT_SOURCE_DIR}/src/view/common/view_logic_security_support.cpp
- ${PROJECT_SOURCE_DIR}/src/view/common/view_logic_security_support.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_security_origin_support.cpp
+ ${PROJECT_SOURCE_DIR}/src/view/common/view_logic_security_support.cpp
+ ${PROJECT_SOURCE_DIR}/src/view/common/view_logic_service_support.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_storage_support.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_uri_support.cpp
${PROJECT_SOURCE_DIR}/src/view/common/view_logic_vibration_support.cpp
SET(VIEW_COMMON_INCLUDES
${PROJECT_SOURCE_DIR}/src/domain
- ${PROJECT_SOURCE_DIR}/src/global_logic
${PROJECT_SOURCE_DIR}/src/profiling
- ${PROJECT_SOURCE_DIR}/src/utils
${PROJECT_SOURCE_DIR}/src/view/common
${VIEW_COMMON_DEP_INCLUDE_DIRS}
)
*/
#include "application_launcher.h"
+
+#include <dpl/log/secure_log.h>
+#include <dpl/singleton_impl.h>
+
#include <app.h>
#include <app_manager.h>
-#include <download.h>
-#include <dpl/singleton_impl.h>
#include <appsvc.h>
+#include <download.h>
+#include <notification.h>
+#include <widget_string.h>
IMPLEMENT_SINGLETON(ApplicationLauncher)
-using namespace WrtDB;
-
namespace {
const char * const SERVICE_EXTRA_DATA_KEY_PATH = "path";
const char * const SERVICE_EXTRA_DATA_KEY_COOKIE = "cookie";
+const char * const SERVICE_EXTRA_DATA_KEY_MODE = "mode";
+const char * const SERVICE_EXTRA_DATA_VALUE_SLIENT = "silent";
const char * const SCHEME_TYPE_RTSP = "rtsp";
const char * const SCHEME_TYPE_HTML5_VIDEO = "html5video";
result = service_send_launch_request(serviceHandle, responseCallback, userData);
if (result != SERVICE_ERROR_NONE) {
- LogError("Failed to run AppService : " << result);
+ service_destroy(serviceHandle);
+ _E("Failed to run service : %d", result);
+ return;
}
service_destroy(serviceHandle);
+ _D("Success to run service");
}
void ApplicationLauncher::OnEventReceived(
const ApplicationLauncherEvents::LaunchApplicationByPkgname &event)
{
using namespace ApplicationLauncherPkgname;
- LogDebug("LaunchApplicationByPkgname");
std::string pkgName(event.GetArg0());
if (PKG_NAME_DOWNLOAD_PROVIDER == pkgName) {
std::string cookie(event.GetArg3());
if ("null" == url) {
- LogError("url is empty");
+ _E("url is empty");
return;
}
// create service
ret = service_create(&serviceHandle);
if (SERVICE_ERROR_NONE != ret && NULL == serviceHandle) {
- LogError("Fail to create service");
+ _E("Fail to create service");
return;
}
// set service operation
ret = service_set_operation(serviceHandle, SERVICE_OPERATION_DOWNLOAD);
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to set operation [" << ret << "]");
+ _E("Fail to set operation [%d]", ret);
service_destroy(serviceHandle);
return;
}
// set service uri
ret = service_set_uri(serviceHandle, url.c_str());
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to set uri [" << ret << "]");
+ _E("Fail to set uri [%d]");
service_destroy(serviceHandle);
return;
}
SERVICE_EXTRA_DATA_KEY_COOKIE,
cookie.c_str());
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to add cookie [" << ret << "]");
+ _D("Fail to add cookie [%d]", ret);
service_destroy(serviceHandle);
return;
}
}
+ ret = service_add_extra_data(serviceHandle,
+ SERVICE_EXTRA_DATA_KEY_MODE,
+ SERVICE_EXTRA_DATA_VALUE_SLIENT);
+ if (SERVICE_ERROR_NONE != ret) {
+ _E("Fail to set service extra data [%d]", ret);
+ service_destroy(serviceHandle);
+ return;
+ }
+
if (m_windowHandle) {
service_set_window(serviceHandle, m_windowHandle);
}
//launch service
ret = service_send_launch_request(serviceHandle, NULL, NULL);
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to launch service [" << ret << "]");
+ _E("Fail to launch service [%d]", ret);
service_destroy(serviceHandle);
return;
}
-
service_destroy(serviceHandle);
+ notification_status_message_post(WRT_POP_STARTING_DOWNLOADING);
return;
} else if (PKG_NAME_VIDEO_PLAYER == pkgName) {
bool isRunning = false;
if (APP_MANAGER_ERROR_NONE !=
app_manager_is_running(PKG_NAME_VT_MAIN.c_str(), &isRunning))
{
- LogError("Fail to get app running information");
+ _E("Fail to get app running information");
return;
}
if (true == isRunning) {
- LogError("video-call is running");
+ _E("video-call is running");
return;
}
const char* url;
if ("null" == scheme) {
- LogError("scheme is empty");
+ _E("scheme is empty");
return;
}
if ("null" == uri) {
- LogError("uri is empty");
+ _E("uri is empty");
return;
}
- LogDebug("scheme: " << scheme);
if (SCHEME_TYPE_RTSP == scheme ||
SCHEME_TYPE_HTML5_VIDEO == scheme)
{
url = uri.c_str();
} else {
- LogError("scheme is invalid!!");
+ _E("scheme is invalid!!");
return;
}
// create service
ret = service_create(&serviceHandle);
if (SERVICE_ERROR_NONE != ret && NULL == serviceHandle) {
- LogError("Fail to create service");
+ _E("Fail to create service");
return;
}
// set url
if (!url || strlen(url) == 0) {
- LogError("Fail to get url");
+ _E("Fail to get url");
service_destroy(serviceHandle);
return;
}
SERVICE_EXTRA_DATA_KEY_PATH,
url);
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to set url [" << ret << "]");
+ _E("Fail to set url [%d]", ret);
service_destroy(serviceHandle);
return;
}
SERVICE_EXTRA_DATA_KEY_COOKIE,
cookie.c_str());
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to add cookie [" << ret << "]");
+ _E("Fail to add cookie [%d]", ret);
service_destroy(serviceHandle);
return;
}
// set package
ret = service_set_package(serviceHandle, PKG_NAME_VIDEO_PLAYER.c_str());
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to set package [" << ret << "]");
+ _E("Fail to set package service [%d]", ret);
service_destroy(serviceHandle);
return;
}
//launch service
ret = service_send_launch_request(serviceHandle, NULL, NULL);
if (SERVICE_ERROR_NONE != ret) {
- LogError("Fail to launch service [" << ret << "]");
+ _E("Fail to launch service [%d]", ret);
service_destroy(serviceHandle);
return;
}
-
- LogDebug("Success launch " << PKG_NAME_VIDEO_PLAYER);
service_destroy(serviceHandle);
return;
+ } else {
+ _E("Not implemented application : ", pkgName.c_str());
}
+
+ _D("Success to launch application : ", pkgName.c_str());
+ return;
}
void ApplicationLauncher::setWidgetTizenId(const std::string& tizenId)
{
- LogDebug("tizen id: " << tizenId);
m_tizenId = tizenId;
}
#include <dpl/event/controller.h>
#include <dpl/generic_event.h>
#include <dpl/singleton.h>
-#include <dpl/wrt-dao-ro/wrt_db_types.h>
#include <appfw/app_service.h>
SchemeMap PopulateMap()
{
- LogInfo("Populating scheme map...");
+ LogDebug("Populating scheme map...");
SchemeMap map;
for (size_t st = Scheme::FILE; st < Scheme::COUNT; ++st) {
- LogInfo(" * " << type2name[st] << "->" << st);
+ LogDebug(" * " << type2name[st] << "->" << st);
map[type2name[st]] = static_cast<Scheme::Type>(st);
}
return map;
ServiceOperation telOp;
telOp.operation = SERVICE_OPERATION_CALL;
telOp.fakeUri = NULL;
+ telOp.mime = NULL;
ret.insert(std::make_pair(Scheme::TEL, telOp));
return ret;
// convert scheme text to appsvc format
while (cit->regex->Consume(&input, &match)) {
- LogInfo("Adding apssvc data: " << cit->key << " " << match);
+ LogDebug("Adding apssvc data: " << cit->key << " " << match);
service_add_extra_data(serviceHandle, cit->key, match.c_str());
}
}
bool httpMultimediaRequest(std::string mimeType, std::string uri)
{
- LogInfo("httpMultimediaRequest called");
+ LogDebug("httpMultimediaRequest called");
if ("null" == mimeType || "null" == uri) {
LogError("uri/mimeType is null");
service_set_mime(serviceHandle, mimeType.c_str());
service_set_uri(serviceHandle, uri.c_str());
} else {
- LogInfo("Not Supported MIME type in WRT");
+ LogDebug("Not Supported MIME type in WRT");
service_destroy(serviceHandle);
return false;
}
void localUriRequest(std::string filePath)
{
- LogInfo("file path = [" << filePath << "]");
+ LogDebug("file path = [" << filePath << "]");
// verify request file path
if (isFileExist(filePath, false) == false) {
const char *mimeType,
const char *userParam)
{
- LogInfo("Download info : " << url << "(" <<
+ LogDebug("Download info : " << url << "(" <<
mimeType << ", " << userParam << ")");
// separate local & host scheme
return;
}
if (std::string(iri->scheme) == SCHEM_FILE) {
- LogInfo("copy to Download directory");
+ LogDebug("copy to Download directory");
if (!iri->path) {
LogError("file path is empty");
return;
url ? std::string(url) : "null");
if (isAppServiceable) {
- LogInfo("Application Service start");
+ LogDebug("Application Service start");
return;
}
void html5VideoRequest(void* event_info)
{
- LogInfo("html5VideoRequestCallback called");
+ LogDebug("html5VideoRequestCallback called");
Assert(event_info);
HTML5Video* video = static_cast<HTML5Video*>(event_info);
#include <widget_string.h>
namespace ViewModule {
-namespace {
-const char* const DAEMON_EDJ_PATH = "/usr/share/edje/wrt/Daemon.edj";
-}
class CertificateSupportImplementation
{
evas_object_show(label);
Evas_Object* layout = elm_layout_add(popup);
- elm_layout_file_set(layout, DAEMON_EDJ_PATH, "popupWithCheck");
+ elm_layout_file_set(layout, WRT_EDJ_PATH, "popupWithCheck");
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
Evas_Object* check = elm_check_add(popup);
#include <widget_string.h>
namespace ViewModule {
-namespace {
-const char* const DAEMON_EDJ_PATH = "/usr/share/edje/wrt/Daemon.edj";
-}
class SecurityOriginSupportImplementation
{
evas_object_show(label);
Evas_Object* layout = elm_layout_add(popup);
- elm_layout_file_set(layout, DAEMON_EDJ_PATH, "popupWithCheck");
+ elm_layout_file_set(layout, WRT_EDJ_PATH, "popupWithCheck");
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
Evas_Object* check = elm_check_add(popup);
}
Evas_Object* check = elm_object_part_content_get(
elm_object_content_get(popup),
- "elm.swallow.end");
+ "elm.swallow.checkbox");
return check;
}
bundle *originBundle = ApplicationDataSingleton::Instance().getBundle();
// search app-control data
startUri = getAppControlUri(originBundle, widgetModel).c_str();
- LogInfo("app-control start uri is " << startUri);
+ LogDebug("app-control start uri is " << startUri);
if (startUri == "") {
- LogInfo("app-control data doesn't have matched data");
+ LogDebug("app-control data doesn't have matched data");
startUri = defaultUri;
}
--- /dev/null
+/*
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+/**
+ * @file context_manager.cpp
+ * @author Andrzej Surdej (a.surdej@samsung.com)
+ * @version 1.0
+ * @brief context getter function implementation
+ */
+
+#include "i_context_manager.h"
+#include <ewk_context_manager.h>
+
+namespace ViewModule {
+
+ContextManagerPtr contextManagerFactoryMethod(
+ const std::string& id,
+ Ewk_Context* c,
+ IViewModulePtr view)
+{
+ ContextManagerPtr ptr (new EwkContextManager(id, c, view));
+ return ptr;
+}
+
+ContextManagerFactoryMethod makeContextManagerFactoryMethod()
+{
+ return contextManagerFactoryMethod;
+}
+
+} // namespace ViewModule
* limitations under the License.
*/
/**
- * @file abstract_context_manager.h
+ * @file i_context_manager.h
* @author Iwanek Tomasz (t.iwanek@samsung.com)
* @version 0.1
* @brief Abstract file for handling operation regarding Ewk_Context.
#include <memory>
#include <functional>
-#include <ewk_context.h>
#include <i_view_module.h>
-namespace WRT {
+class Ewk_Context; // forward declaration of context type
-class AbstractContextManager;
-typedef std::shared_ptr<AbstractContextManager> ContextManagerPtr;
+namespace ViewModule {
+
+class IContextManager;
+typedef std::shared_ptr<IContextManager> ContextManagerPtr;
typedef std::function<ContextManagerPtr (const std::string&, Ewk_Context*, ViewModule::IViewModulePtr)> ContextManagerFactoryMethod;
* NOTE: This interface in not visible outside core module and it should not be.
* Reason for this code is not modify RunnableWidgetObject behaviour for mocks.
*/
-class AbstractContextManager {
+class IContextManager {
public:
- AbstractContextManager(
+ IContextManager(
const std::string& tizenAppId,
Ewk_Context* ewkContext,
ViewModule::IViewModulePtr viewModule) :
m_appId(tizenAppId), m_ewkContext(ewkContext), m_view(viewModule) {}
- virtual ~AbstractContextManager() {}
+ virtual ~IContextManager() {}
/**
* @brief getEwkContext returns ewk context
* @return ewk context
protected:
std::string m_appId;
Ewk_Context* m_ewkContext;
- ViewModule::IViewModulePtr m_view;
+ IViewModulePtr m_view;
};
-template<class T> ContextManagerPtr contextManagerFactoryMethod(const std::string& id, Ewk_Context* c, ViewModule::IViewModulePtr view)
-{
- return ContextManagerPtr( new T(id, c, view) );
-}
+ContextManagerPtr contextManagerFactoryMethod(const std::string& id, Ewk_Context* c, IViewModulePtr view);
-template<class T> ContextManagerFactoryMethod makeContextManagerFactoryMethod()
-{
- return contextManagerFactoryMethod<T>;
-}
+ContextManagerFactoryMethod makeContextManagerFactoryMethod();
-}
+} // namespace ViewModule
#endif // ABSTRACT_CONTEXT_MANAGER_H
)
SET(VIEW_MODULE_SOURCES
+ ${PROJECT_SOURCE_DIR}/src/view/webkit/ewk_context_manager.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_authentication_challenge_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_certificate_confirm_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_message_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_orientation_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_scheme_support.cpp
- ${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_service_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_usermedia_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_web_notification_support.cpp
${PROJECT_SOURCE_DIR}/src/view/webkit/view_logic_web_storage_support.cpp
SET(VIEW_MODULE_INCLUDES
${PROJECT_SOURCE_DIR}/src/api_new
- ${PROJECT_SOURCE_DIR}/src/common
${PROJECT_SOURCE_DIR}/src/domain
- ${PROJECT_SOURCE_DIR}/src/global_logic
- ${PROJECT_SOURCE_DIR}/src/popup-process
${PROJECT_SOURCE_DIR}/src/profiling
- ${PROJECT_SOURCE_DIR}/src/utils
${PROJECT_SOURCE_DIR}/src/view
${PROJECT_SOURCE_DIR}/src/view/webkit
${PROJECT_SOURCE_DIR}/src/plugin-service
- ${PROJECT_SOURCE_DIR}/src/plugin-service/plugin-loading
${VIEW_MODULE_DEP_INCLUDE_DIRS}
)
${VIEW_MODULE_SOURCES}
)
-TARGET_LINK_LIBRARIES(${TARGET_VIEW_MODULE_LIB}
- ${VIEW_COMMON_LIB_STATIC}
+TARGET_LINK_LIBRARIES(
+ ${TARGET_VIEW_MODULE_LIB}
+ ${TARGET_VIEW_COMMON_LIB_STATIC}
${VIEW_MODULE_DEP_LIBRARIES}
+ ${TARGET_WRT_ENGINE_STATIC}
${PROF_LIB}
# ${TARGET_PLUGIN_MODULE_LIB}
)
#include <dpl/utils/wrt_global_settings.h>
#include "ewk_context_manager.h"
-namespace WRT {
+namespace ViewModule {
static const std::string bundlePath("/usr/lib/libwrt-injected-bundle.so");
EwkContextManager::EwkContextManager(
const std::string& tizenAppId,
Ewk_Context* ewkContext,
- ViewModule::IViewModulePtr viewModule)
- : AbstractContextManager(tizenAppId, ewkContext, viewModule),
+ IViewModulePtr viewModule)
+ : IContextManager(tizenAppId, ewkContext, viewModule),
m_initialized(false), m_isInternalContext(false)
{
if (!initialize()) {
// proxy server setting
setNetworkProxy();
- LogInfo("ewk_context_certificate_file_set() was called.");
+ LogDebug("ewk_context_certificate_file_set() was called.");
const char* caCertPath = cert_svc_get_certificate_crt_file_path();
if (caCertPath) {
ewk_context_certificate_file_set(m_ewkContext, caCertPath);
LogError("cert path is null");
}
- // set local stroage database path
- WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(m_appId));
- ewk_context_web_storage_path_set(
- m_ewkContext,
- dao.getPrivateLocalStoragePath().c_str());
-
ewk_context_tizen_extensible_api_set(
m_ewkContext,
EWK_EXTENSIBLE_API_MEDIA_STREAM_RECORD,
EWK_EXTENSIBLE_API_MEDIA_VOLUME_CONTROL,
EINA_TRUE);
+
+ // web application dependent settings
+ WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(m_appId));
+ ewk_context_web_storage_path_set(
+ m_ewkContext,
+ dao.getPrivateLocalStoragePath().c_str());
+
setAutoFullscreenMode();
- setBackgroundSupport();
#ifdef CSP_ENABLED
if (dao.getSecurityModelVersion() ==
WrtDB::WidgetSecurityModelVersion::WIDGET_SECURITY_MODEL_V2)
{
- setCSPSupport();
+ ewk_context_tizen_extensible_api_set(m_ewkContext,
+ EWK_EXTENSIBLE_API_CSP,
+ EINA_TRUE);
}
#endif
+ // WidgetSettingList dependent settings
+ WrtDB::WidgetSettings widgetSettings;
+ dao.getWidgetSettings(widgetSettings);
+ WidgetSettingList settings(widgetSettings);
+
+ ewk_context_tizen_extensible_api_set(
+ m_ewkContext,
+ EWK_EXTENSIBLE_API_BACKGROUND_MUSIC,
+ settings.getBackgroundSupport() == BackgroundSupport_Enable ?
+ EINA_TRUE : EINA_FALSE);
+ // Disable in the RSA
+ //ewk_context_tizen_extensible_api_set(
+ // m_ewkContext,
+ // EWK_EXTENSIBLE_API_SOUND_MODE,
+ // settings.getSoundMode() == SoundMode_Exclusive ?
+ // EINA_TRUE : EINA_FALSE);
+
// ewk storage_path set
ewk_context_storage_path_reset(m_ewkContext);
std::string pluginsPath =
- WrtDB::WidgetConfig::GetWidgetNPRuntimePluginsPath(
- dao.getTizenPkgId());
+ WrtDB::WidgetConfig::GetWidgetNPRuntimePluginsPath(
+ dao.getTizenPkgId());
// npruntime plugins path set
- LogInfo("ewk_context_additional_plugin_path_set() : " << pluginsPath);
+ LogDebug("ewk_context_additional_plugin_path_set() : " << pluginsPath);
ewk_context_additional_plugin_path_set(m_ewkContext, pluginsPath.c_str());
fullscreen);
}
-void EwkContextManager::setBackgroundSupport()
-{
- WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(m_appId));
- if(!m_ewkContext) {
- return;
- }
-
- WrtDB::WidgetSettings widgetSettings;
- dao.getWidgetSettings(widgetSettings);
- WidgetSettingList settings(widgetSettings);
- bool backgroundSupport = false;
- if(settings.getBackgroundSupport() == BackgroundSupport_Enable) {
- backgroundSupport = true;
- }
- ewk_context_tizen_extensible_api_set(
- m_ewkContext,
- EWK_EXTENSIBLE_API_BACKGROUND_MUSIC,
- backgroundSupport);
-}
-
-void EwkContextManager::setCSPSupport()
-{
- if(!m_ewkContext) {
- return;
- }
-
- WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(m_appId));
- LogInfo("Setting CSP default policy");
- ewk_context_tizen_extensible_api_set(m_ewkContext,
- EWK_EXTENSIBLE_API_CSP,
- true);
-}
-
void EwkContextManager::setNetworkProxy()
{
Assert(m_ewkContext);
char* proxy = vconf_get_str(VCONFKEY_NETWORK_PROXY);
if (proxy && strlen(proxy) && strcmp(proxy, "0.0.0.0")) {
- LogInfo("proxy address: " << proxy);
+ LogDebug("proxy address: " << proxy);
ewk_context_proxy_uri_set(m_ewkContext, proxy);
} else {
- LogInfo("proxy address is empty");
+ LogDebug("proxy address is empty");
ewk_context_proxy_uri_set(m_ewkContext, NULL);
}
}
return ContextManagerPtr(new EwkContextManager(tizenAppId, ewkContext, viewModule));
}
-}
-
+} // namespace ViewModule
#define EWK_CONTEXT_MANAGER_H
#include <vconf.h>
-#include <abstract_context_manager.h>
+#include <i_context_manager.h>
-namespace WRT {
+namespace ViewModule {
-class EwkContextManager : public AbstractContextManager {
+class EwkContextManager : public IContextManager {
public:
EwkContextManager(
const std::string& tizenAppId,
void setCallbacks();
void unsetCallbacks();
void setAutoFullscreenMode();
- void setBackgroundSupport();
- void setCSPSupport();
void setNetworkProxy();
// ewk context callback functions
bool m_initialized;
bool m_isInternalContext;
};
-
-}
+} // namespace ViewModule
#endif // EWK_CONTEXT_MANAGER_H
${INJECTED_BUNDLE_DEP_INCLUDE_DIRS}
${PROJECT_SOURCE_DIR}/src/plugin-service
${PROJECT_SOURCE_DIR}/src/view/common
+ ${PROJECT_SOURCE_DIR}/src/domain
)
ADD_DEFINITIONS(${INJECTED_BUNDLE_DEP_CFLAGS})
#include <openssl/bio.h>
#include <openssl/buffer.h>
-#include <dpl/log/log.h>
#include <dpl/assert.h>
#include <dpl/string.h>
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
#include <dpl/wrt-dao-ro/global_config.h>
#include <dpl/utils/mime_type_utils.h>
+#include <dpl/log/secure_log.h>
+
namespace InjectedBundle {
namespace {
const char * const SCHEME_FILE_SLASH = "file://";
FILE* fp = fopen(filePath.c_str(), "rb");
if (NULL == fp) {
- LogDebug("Couldnot open file : " << filePath);
+ _E("Couldnot open file : %s", filePath.c_str());
return std::string();
}
int outSize = 0;
if (0 != ssmDecrypt(pkgid, (char*)inChunk.get(), (int)decReadSize, &outChunk, &outSize))
{
- LogError("Failed to get decrypted resource");
+ _E("Failed to get decrypted resource");
fclose(fp);
return std::string();
}
} while( 0 == std::feof(fp));
fclose(fp);
memset(DecryptedString.get() + size, '\n', fileSize - size);
- LogDebug("resource need to encoding base64");
+
BIO *bmem, *b64;
BUF_MEM *bptr;
void initialize(WrtDB::TizenAppId appId)
{
- LogInfo("initialize");
+ _D("called");
m_appId = appId;
WrtDB::WidgetDAOReadOnly dao(m_appId);
dao.getEncryptedFileList(m_encryptedFiles);
if (!m_encryptedFiles.empty()) {
m_isEncrypted = true;
- LogDebug("encrypted application");
+ _D("encrypted application");
}
m_pkgId = dao.getTzPkgId();
std::string preloadPath(WrtDB::GlobalConfig::GetUserPreloadedWidgetPath());
if (0 == installedPath.compare(0, preloadPath.length(), preloadPath)) {
m_isPreload = true;
- LogDebug("preload application");
+ _D("preload application");
}
m_initialized = true;
void deinitialize(void)
{
- LogInfo("deinitialize");
+ _D("called");
m_encryptedFiles.clear();
m_targetIt = m_encryptedFiles.end();
bool isNeedDecryption(std::string url)
{
if (!m_initialized) {
- LogInfo("not initialize");
+ _E("not initialized");
return false;
}
std::string filePath = getFilePath(url);
info.fileName = DPL::FromUTF8String(filePath);
if (m_encryptedFiles.end() != (it = m_encryptedFiles.find(info))) {
- LogDebug(" info file name : " << it->fileName);
- LogDebug(" info file size : " << it->fileSize);
+ _D(" info file name : %s", DPL::ToUTF8String(it->fileName).c_str());
+ _D(" info file size : %d", it->fileSize);
m_targetIt = it;
return true;
}
std::string decryptResource(std::string url)
{
if (!m_initialized) {
- LogInfo("not initialize");
+ _E("not initialized");
return std::string();
}
*/
#include "injected_bundle_uri_handling.h"
-#include <dpl/log/log.h>
+#include <dpl/log/secure_log.h>
#include <string.h>
#include <sys/stat.h>
#include <dpl/utils/wrt_global_settings.h>
#include <iri.h>
// WhiteList check
#include <dpl/wrt-dao-ro/global_dao_read_only.h>
-// WKBundle API (i.e. message sending)
-#include <WKBundle.h>
-#include <WKString.h>
-#include <WKType.h>
namespace {
char const * const SCHEME_TYPE_FILE = "file";
bool checkWhitelist(const char *url)
{
- LogInfo("Check WhiteList");
if (url == NULL) {
return true;
}
std::string host = iri->host;
if (scheme.find(SCHEME_TYPE_HTTP) == std::string::npos) {
- LogDebug("url doesn't need to check white list");
return true;
}
std::string host = iri->host;
if (scheme.find(SCHEME_TYPE_HTTP) == std::string::npos) {
- LogDebug("url doesn't need to check allow-navigation");
return true;
}
return true;
}
}
- LogDebug("deny");
+ _E("deny");
return false;
}
{
return true;
}
+
if(url.size() >= strlen(SCHEME_TYPE_FILE) + 3)
{
std::string file = url.substr(strlen(SCHEME_TYPE_FILE) + 3);
ace_bool_t result = ACE_FALSE;
- LogDebug("Making ace check with new C-API");
-
ace_return_t ret = ace_check_access(&aceRequest, &result);
- LogDebug("Result is: " << static_cast<int>(result));
+ _D("Result is: %d", static_cast<int>(result));
delete[] aceRequest.dev_cap_list.items[0].param_list.items;
delete[] aceRequest.dev_cap_list.items;
{
if (version == WrtDB::WidgetSecurityModelVersion::WIDGET_SECURITY_MODEL_V1)
{
- if (!checkWARP(inputURI.c_str(), tizenId))
- {
- LogWarning("Request was blocked by WARP: " << inputURI);
-
+ if (!checkWARP(inputURI.c_str(), tizenId)) {
+ _E("Request was blocked by WARP: %s", inputURI.c_str());
return false;
}
}
-// disable for performance
-#if 0
- if (!preventSymlink(uri)) {
- LogWarning("Request for symlink is invalid: " << uri);
- return false;
- }
-#endif
+ // disable for performance
+ // if (!preventSymlink(inputURI)) {
+ // LogWarning("Request for symlink is invalid: " << inputURI);
+ // return false;
+ //}
return true;
}
{
DPL::Optional<DPL::String> optionalUri(inputURI);
if (optionalUri.IsNull()) {
- LogDebug("uri is empty");
+ _D("uri is empty");
return true;
}
std::string uri = DPL::ToUTF8String(inputURI);
- if (version ==
- WrtDB::WidgetSecurityModelVersion::WIDGET_SECURITY_MODEL_V1)
- {
- if (!checkWARP(uri.c_str(), tizenId)) {
- LogWarning("Request was blocked by WARP: " << uri);
- return false;
- }
- }
-
-// disable for performance
-#if 0
- if (!preventSymlink(uri)) {
- LogWarning("Request for symlink is invalid: " << uri);
- return false;
- }
-#endif
-
- return true;
+ return processURI(uri, tizenId, version);
}
bool processMainResource(const DPL::String& inputURI,
{
DPL::Optional<DPL::String> optionalUri(inputURI);
if (optionalUri.IsNull()) {
- LogDebug("uri is empty");
+ _D("uri is empty");
return true;
}
WrtDB::WidgetSecurityModelVersion::WIDGET_SECURITY_MODEL_V1)
{
if (!checkWARP(uri.c_str(), tizenId)) {
- LogWarning("Request was blocked by WARP: " << uri);
+ _E("Request was blocked by WARP: %s", uri.c_str());
return false;
}
} else if (version ==
{
#ifdef ALLOW_NAVIGATION_ENABLED
if (!checkAllowNavigation(uri.c_str(), tizenId)) {
- LogWarning("Request was blocked by WARP: " << uri);
+ _E("Request was blocked by allow-navigation: %s", uri.c_str());
return false;
}
#else
#endif
}
-// disable for performance
-#if 0
- if (!preventSymlink(uri)) {
- LogWarning("Request for symlink is invalid: " << uri);
- return false;
- }
-#endif
-
+ // disable for performance
+ // if (!preventSymlink(uri)) {
+ // LogWarning("Request for symlink is invalid: " << uri);
+ // return false;
+ // }
return true;
}
inputURI.compare(0, strlen(SCHEME_TYPE_FILE), SCHEME_TYPE_FILE) &&
inputURI.compare(0, strlen(SCHEME_TYPE_APP), SCHEME_TYPE_APP))
{
+ _D("scheme doesn't need to localize");
return inputURI;
}
std::string localizedURI = W3CFileLocalization::getFilePathInWidgetPackageFromUrl(tizenId, inputURI);
- if (localizedURI.empty())
- {
+ if (localizedURI.empty()) {
return inputURI;
- }
- else
- {
+ } else {
return std::string("file://") + localizedURI;
}
}
const DPL::String& tizenId)
{
std::string uri = DPL::ToUTF8String(inputURI);
- LogDebug("localizing url: " << uri);
- auto urlcstr = uri.c_str();
+ const char* urlcstr = uri.c_str();
const char *end = strstr(urlcstr, ":");
if (!end) {
- LogDebug("no schema in link, return null");
- // lack of schema
+ _W("no schema in link, return null");
return DPL::Optional<DPL::String>::Null;
}
std::string scheme(urlcstr, end);
#else
if (scheme != SCHEME_TYPE_WIDGET && scheme != SCHEME_TYPE_FILE) {
#endif
- LogDebug("scheme doesn't need to localize");
+ _D("scheme doesn't need to localize");
return DPL::OptionalString(inputURI);
}
if (found.IsNull()) {
// In this case, path doesn't need to localize. return input uri
- LogDebug("Path not found within current locale in current widget");
-
+ _W("Path not found within current locale in current widget");
return DPL::OptionalString(inputURI);
} else {
DPL::String uri(L"file://" + *found);
- LogDebug("Will load resource: " << uri);
- LogDebug("finished");
+ _D("Will load resource: %s", DPL::ToUTF8String(uri).c_str());
return DPL::OptionalString(uri);
}
}
#include <dpl/string.h>
#include <dpl/optional_typedefs.h>
#include <dpl/wrt-dao-ro/common_dao_types.h>
-// WKBundleRef type
-#include <WKBundle.h>
namespace InjectedBundleURIHandling {
bool processURI(const DPL::String& inputURI,
#include <set>
#include <string>
-#include <dpl/log/log.h>
+#include <dpl/log/secure_log.h>
#include <dpl/assert.h>
#include <dpl/string.h>
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
void initialize(WKBundlePageRef page)
{
- LogInfo("initialize");
+ _D("initialize");
if (!m_initialized) {
Assert(false);
}
if (isExisted(page)) {
- LogError("This page is already initialized");
+ _W("This page is already initialized");
return;
}
void deinitialize(WKBundlePageRef page)
{
- LogInfo("deinitialize");
+ _D("deinitialize");
if (!m_initialized) {
Assert(false);
}
void enterViewmodesAllPages(const std::string& mode)
{
- LogInfo("setViewmodesAllPages");
+ _D("setViewmodesAllPages");
if (!m_initialized) {
Assert(false);
}
if (!isSupportViewmode(mode)) {
- LogError("Wrong viewmode : " << mode);
+ _W("Wrong viewmode : %s", mode.c_str());
return;
}
void exitViewmodesAllPages(void)
{
- LogInfo("exitViewmodesAllPages");
+ _D("exitViewmodesAllPages");
if (!m_initialized) {
Assert(false);
}
#include <dpl/localization/LanguageTagsProvider.h>
#include <dpl/event/main_event_dispatcher.h>
-#include <wrt_log.h>
+#include <dpl/log/secure_log.h>
#include <wrt_plugin_module.h>
#include <profiling_util.h>
#include "injected_bundle_viewmodes_support.h"
namespace {
-const char * const SCHEME_HTTP = "http";
-const char * const SCHEME_HTTPS = "https";
-const char * const SCHEME_FILE = "file";
-const char * const SCHEME_FILE_SLASH = "file://";
-const char * const SCHEME_BOX_SLASH = "box://";
-const char * const BLANK_PAGE_URL = "about:blank";
-const char * const HTML_MIME = "text/html";
-const char * const PHP_MIME = "application/x-php";
+const char SCHEME_HTTP[] = "http";
+const char SCHEME_HTTPS[] = "https";
+const char SCHEME_FILE[] = "file";
+const char SCHEME_FILE_SLASH[] = "file://";
+const char SCHEME_BOX_SLASH[] = "box://";
+const char BLANK_PAGE_URL[] = "about:blank";
+const char HTML_MIME[] = "text/html";
+const char PHP_MIME[] = "application/x-php";
+const char WRT_WILL_SEND_REQUEST_LOG_ENABLE[] = "WRT_WILL_SEND_REQUEST_LOG_ENABLE";
const std::size_t FILE_BUF_MAX_SIZE = 1024; // bytes
const std::size_t PLAIN_CHUNK_SIZE = 1008; // bytes
const unsigned int UID_ROOT = 0;
const unsigned int DEFAULT_PRIORITY = 0;
-const char * const PRIVILEGE_APP_TYPE = "wgt";
+const char PRIVILEGE_APP_TYPE[] = "wgt";
#ifdef CORS_WHITELISTING_ENABLED
const char * const warpAllowProtocolsForWildcard[] = { "http", "https" };
#endif
m_encodedBundle(""),
m_theme(""),
m_willRemoveContext(NULL),
- m_widgetType(WrtDB::APP_TYPE_UNKNOWN),
m_securityModelVersion(
WrtDB::WidgetSecurityModelVersion::WIDGET_SECURITY_MODEL_V1),
m_initialized(false),
WKBundlePageRef page,
const void* clientInfo)
{
- Bundle* This = static_cast<Bundle*>(const_cast<void*>(clientInfo));
+ Bundle* This = static_cast<Bundle*>(const_cast<void*>(clientInfo));
This->willDestroyPage(page);
}
_D("Locale: %s", DPL::ToUTF8String(*it).c_str());
}
- m_widgetType = dao.getWidgetType();
-
_D("Preload PluginLogicSingleton");
PluginModule::init(WrtDB::WidgetDAOReadOnly::getHandle(m_widgetTizenId));
_D("Preload PluginLogicSingleton_end");
_D("Previous context: %p", This->m_pageGlobalContext.getContextForPage(page));
PluginModule::stop(This->m_pageGlobalContext.getContextForPage(page));
}
- LogDebug("New context: " << context);
+ _D("New context: %p", context);
//note that since we need old context for unloading plugins it must be sotred
//custom container take care of increamenting and decrementing references
This->m_pageGlobalContext.insertContextForPage(page, context);
WKURLRequestRef Bundle::willSendRequestForFrame(WKURLRequestRef request)
{
- static bool logEnable = (getenv("WRT_WILL_SEND_REQUEST_LOG_ENABLE") != NULL);
+ static bool logEnable = (getenv(WRT_WILL_SEND_REQUEST_LOG_ENABLE) != NULL);
WKURLRef wkUrl = WKURLRequestCopyURL(request);
WKStringRef wkStr = WKURLCopyString(wkUrl);
if (logEnable){ _D("willSendRequestForFrame : %s", stdUrl.c_str()); }
+ std::string scheme = stdUrl.substr(0, stdUrl.find_first_of(':'));
+
+#ifdef APP_SCHEME_ENABLED
+ if (scheme == SCHEME_FILE)
+ {
+ _E("File schema blocked for: %s", stdUrl.c_str());
+ return NULL;
+ }
+#endif
+
localizedUrl = InjectedBundleURIHandling::localizeURI(stdUrl, DPL::ToUTF8String(m_widgetTizenId));
bool ret = InjectedBundleURIHandling::processURI(localizedUrl, m_widgetTizenId, m_securityModelVersion);
// log disabled for performance
//LogDebug("URI processing result: " << result);
- std::string scheme = localizedUrl.substr(0, localizedUrl.find_first_of(':'));
-
-#ifdef APP_SCHEME_ENABLED
- if (scheme == SCHEME_FILE) {
- _D("File schema blocked for: %s", stdUrl.c_str());
- return NULL;
- }
-#endif
+ scheme = localizedUrl.substr(0, localizedUrl.find_first_of(':'));
// Return value must contain details information of input
// WKURLRequestRef. Current webkit2 doesn't support api that
ctx = NEW_WINDOW;
}
- UriAction action;
- if (m_widgetType == WrtDB::APP_TYPE_TIZENWEBAPP) {
- action = g_tizenActionMap[type][ctx];
- } else {
- _D("Unsupported application type: %d", type);
- return WKBundlePagePolicyActionPassThrough;
- }
-
+ UriAction action = g_tizenActionMap[type][ctx];
_D("Scheme type: %d, Navigation context: %d, Action: %d",
type,
ctx,
std::string m_theme;
std::set<JSGlobalContextRef> m_loadedContext;
JSGlobalContextRef m_willRemoveContext;
- WrtDB::WidgetType m_widgetType;
WrtDB::WidgetSecurityModelVersion m_securityModelVersion;
bool m_initialized;
#include <pcrecpp.h>
#include <sysman.h>
#include <widget_model.h>
-#include <wrt_log.h>
+#include <dpl/log/secure_log.h>
#include <system_settings.h>
#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
#include <dpl/utils/wrt_global_settings.h>
-#include <common/application_data.h>
+#include <application_data.h>
#include <common/application_launcher.h>
#include <common/message_support.h>
#include <common/scheme.h>
const char *theme = elm_theme_get(NULL);
if (theme) {
m_theme = theme;
- LogInfo("theme is " << m_theme);
+ LogDebug("theme is " << m_theme);
}
// set members
}
#endif
- if (m_model->SettingList.Get().getAccessibility() == Accessibility_Enable)
- {
- elm_access_object_register(m_currentEwkView, m_window);
- }
-
ADD_PROFILING_POINT("initializeSupport", "start");
initializeSupport();
ADD_PROFILING_POINT("initializeSupport", "stop");
LogError("Localized current URI doesn't exist");
return;
}
- LogInfo("url : " << url);
+ LogDebug("url : " << url);
// load page
ewk_view_url_set(m_currentEwkView, url.c_str());
void ViewLogic::hideWidget()
{
LogDebug("hiding widget");
- if (m_model->SettingList.Get().getAccessibility() == Accessibility_Enable)
- {
- elm_access_object_unregister(m_currentEwkView);
- }
ViewModule::StorageSupport::deinitializeStorage(m_model);
m_appsSupport->deinitialize();
m_vibrationSupport->deinitialize();
system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE);
while (!m_ewkViewList.empty()) {
- LogInfo("pop webview: " << m_ewkViewList.back());
+ LogDebug("pop webview: " << m_ewkViewList.back());
removeEwkView(m_ewkViewList.back());
}
m_ewkViewList.clear();
void ViewLogic::suspendWidget()
{
- LogInfo("Pausing widget");
+ LogDebug("Pausing widget");
Assert(m_model);
if (!m_currentEwkView) {
LogWarning("Cannot suspend widget without view");
} else {
setEwkViewInvisible(m_currentEwkView);
+
if (!m_isBackgroundSupport) {
+ FOREACH(it, m_ewkViewList) {
+ if (*it != m_currentEwkView) {
+ suspendWebkit(*it);
+ }
+ }
+
suspendWebkit(m_currentEwkView);
}
}
void ViewLogic::resumeWidget()
{
- LogInfo("Resume widget");
+ LogDebug("Resume widget");
Assert(m_model);
- if (m_currentEwkView) {
+ if (m_currentEwkView)
+ {
setEwkViewVisible(m_currentEwkView);
+
if (!m_isBackgroundSupport) {
+ FOREACH(it, m_ewkViewList) {
+ if (*it != m_currentEwkView) {
+ resumeWebkit(*it);
+ }
+ }
+
resumeWebkit(m_currentEwkView);
}
}
void ViewLogic::resetWidget()
{
- LogInfo("Resetting Widget");
+ LogDebug("Resetting Widget");
// handling case of WebProcess is locked
if (m_isPopupReplyWait) {
// reset web application
// destory all webview
while (!m_ewkViewList.empty()) {
- LogInfo("pop webview: " << m_ewkViewList.back());
+ LogDebug("pop webview: " << m_ewkViewList.back());
removeEwkView(m_ewkViewList.back());
}
m_ewkViewList.clear();
} else {
if (1 >= m_ewkViewList.size()) {
// If there is no previous page, widget move to backgroud.
- LogInfo("Widget move to backgroud");
+ LogDebug("Widget move to backgroud");
elm_win_lower(m_window);
} else {
// Back to previous webview
- LogInfo("Widget move to previous webview");
+ LogDebug("Widget move to previous webview");
m_closedEwkView = m_currentEwkView;
ecore_idler_add(windowCloseIdlerCallback, this);
}
void ViewLogic::reloadStartPage()
{
- LogInfo("Reload Start Page");
+ LogDebug("Reload Start Page");
// prevent fail to load plugin bundle side
m_isBackgroundReload = true;
if (!m_cbs->bufferSet.empty()) {
m_cbs->bufferSet(m_currentEwkView);
}
- LogInfo("Reloading Start Page is done!");
+ LogDebug("Reloading Start Page is done!");
}
Evas_Object* ViewLogic::getCurrentWebview()
{
- LogInfo("get current webview");
+ LogDebug("get current webview");
return m_currentEwkView;
}
*returnData = strdup(ret.c_str());
}
} else {
- LogInfo("X window isn't exist");
+ LogDebug("X window isn't exist");
}
}
}
void ViewLogic::downloadData(const char* url)
{
- LogInfo("enter");
+ LogDebug("enter");
if (!url) {
return;
}
void ViewLogic::activateVibration(bool on, uint64_t time)
{
- LogInfo("enter");
+ LogDebug("enter");
if (on) {
m_vibrationSupport->startVibration(static_cast<long>(time));
} else {
EA_CALLBACK_MORE,
eaKeyCallback,
this);
+ // Always register access object even application doesn't support
+ // accessibility. In case of accessibility isn't supported, efl_assist
+ // shows warning message by syspopup.
+ // initScreenReaderSupport is related method. (window_data.cpp)
+ elm_access_object_register(wkView, m_window);
}
void ViewLogic::ewkClientDeinit(Evas_Object *wkView)
ecore_timer_del(m_orientationThresholdTimer);
m_orientationThresholdTimer = NULL;
}
+ elm_access_object_unregister(wkView);
}
bool ViewLogic::createEwkView(Evas* canvas)
setEwkViewInvisible(m_currentEwkView);
}
- LogInfo("push webview: " << newEwkView);
+ LogDebug("push webview: " << newEwkView);
m_ewkViewList.push_back(newEwkView);
m_currentEwkView = newEwkView;
return true;
W3CFileLocalization::getStartFileInfo(m_model->TizenId);
if (!fileInfo.IsNull()) {
encoding = DPL::ToUTF8String((*fileInfo).encoding);
- LogInfo("Found custom encoding in DB: " << encoding);
+ LogDebug("Found custom encoding in DB: " << encoding);
}
- LogInfo("Setting encoding: " << encoding);
+ LogDebug("Setting encoding: " << encoding);
if (ewk_settings_default_encoding_set(settings,encoding.c_str())) {
- LogInfo("Encoding set properly");
+ LogDebug("Encoding set properly");
} else {
LogError("Error while setting encoding");
}
void ViewLogic::removeEwkView(Evas_Object *wkView)
{
- LogInfo("removeEwkView called");
+ LogDebug("removeEwkView called");
Assert(wkView);
Assert(0 != m_ewkViewList.size());
m_ewkViewList.remove(wkView);
}
-void ViewLogic::resumeEwkView(Evas_Object *wkView)
-{
- LogInfo("resumeEwkView called");
- Assert(wkView);
-
- // register webview callback
- ewkClientInit(wkView);
-
- // resume webkit
- resumeWebkit(wkView);
-
- return;
-}
-
-void ViewLogic::suspendEwkView(Evas_Object *wkView)
-{
- LogInfo("suspendEwkView called");
- Assert(wkView);
-
- // suspend webkit
- suspendWebkit(wkView);
-
- // unregister webview callbacks
- ewkClientDeinit(wkView);
- return;
-}
-
void ViewLogic::setEwkViewInvisible(Evas_Object *wkView)
{
- LogInfo("setEwkViewInvisible called");
+ LogDebug("setEwkViewInvisible called");
Assert(wkView);
ewk_view_page_visibility_state_set(wkView,
void ViewLogic::setEwkViewVisible(Evas_Object *wkView)
{
- LogInfo("setEwkViewVisible called");
+ LogDebug("setEwkViewVisible called");
Assert(wkView);
ewk_view_page_visibility_state_set(wkView,
void ViewLogic::resumeWebkit(Evas_Object *wkView)
{
- LogDebug("resumeWebkit");
+ LogDebug("resumeWebkit : " << wkView);
Assert(wkView);
ewk_view_resume(wkView);
void ViewLogic::suspendWebkit(Evas_Object *wkView)
{
- LogDebug("suspendWebkit");
+ LogDebug("suspendWebkit : " << wkView);
Assert(wkView);
ewk_view_suspend(wkView);
Evas_Object* /*obj*/,
void* eventInfo)
{
- LogInfo("processCrashedCallback");
+ LogDebug("processCrashedCallback");
Assert(data);
ViewLogic const * const view =
static_cast<ViewLogic const * const>(data);
* and the previous one is shown. This is not an elegant solution
* but we don't have a better one.
*/
- LogInfo("Scheme has been handled externally. Removing empty view.");
+ LogDebug("Scheme has been handled externally. Removing empty view.");
if (ewk_view_back_possible(This->m_currentEwkView)) {
// go back to previous WKPage
ewk_view_back(This->m_currentEwkView);
notiData->m_body = DPL::ToUTF8String(*string);
}
- LogInfo("notification id : " << notiData->m_id);
- LogInfo("notification iconURL : " << notiData->m_iconURL);
- LogInfo("notification title : " << notiData->m_title);
- LogInfo("notification body : " << notiData->m_body);
+ LogDebug("notification id : " << notiData->m_id);
+ LogDebug("notification iconURL : " << notiData->m_iconURL);
+ LogDebug("notification title : " << notiData->m_title);
+ LogDebug("notification body : " << notiData->m_body);
showWebNotification(notiData);
ewk_notification_showed(This->m_ewkContext, ewk_notification_id_get(noti));
// Fullscreen API callbacks
void ViewLogic::enterFullscreenCallback(
void* data,
- Evas_Object* /*obj*/,
- void* /*eventInfo*/)
+ Evas_Object* obj,
+ void* eventInfo)
{
- LogInfo("enterFullscreenCallback called");
+ LogDebug("enterFullscreenCallback called");
Assert(data);
ViewLogic* This = static_cast<ViewLogic*>(data);
ViewLogicMessageSupport::setViewmodes(
This->m_ewkContext,
"fullscreen");
- if (!This->m_cbs->toggleFullscreen.empty()) {
- This->m_cbs->toggleFullscreen(true);
+
+ bool isFullscreenByPlatform = false;
+ if (eventInfo) {
+ isFullscreenByPlatform =
+ (*static_cast<Eina_Bool*>(eventInfo) == EINA_TRUE);
+ }
+ if (!This->m_cbs->enterFullscreen.empty()) {
+ This->m_cbs->enterFullscreen(obj, isFullscreenByPlatform);
}
}
+
void ViewLogic::exitFullscreenCallback(
void* data,
- Evas_Object* /*obj*/,
+ Evas_Object* obj,
void* /*eventInfo*/)
{
- LogInfo("exitFullscreenCallback called");
+ LogDebug("exitFullscreenCallback called");
Assert(data);
ViewLogic* This = static_cast<ViewLogic*>(data);
ViewLogicMessageSupport::setViewmodes(
This->m_ewkContext,
Message::ToInjectedBundle::SET_VIEWMODES_MSGBODY_EXIT);
- if (!This->m_cbs->toggleFullscreen.empty()) {
- This->m_cbs->toggleFullscreen(false);
+ if (!This->m_cbs->exitFullscreen.empty()) {
+ This->m_cbs->exitFullscreen(obj);
}
}
const char* result,
void* /*userData*/)
{
- LogInfo("didRunJavaScriptCallback called");
- LogInfo("result = " << result);
+ LogDebug("didRunJavaScriptCallback called");
+ LogDebug("result = " << result);
}
void ViewLogic::eaKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
Ea_Callback_Type keyType =
static_cast<Ea_Callback_Type>(reinterpret_cast<int>(eventInfo));
- LogInfo("Key = [" << keyType << "]");
+ LogDebug("Key = [" << keyType << "]");
std::string keyName;
if (keyType == EA_CALLBACK_BACK) {
if (logEnable)
{
- LogInfo("enter");
+ LogDebug("enter");
}
}
Evas_Object* obj,
void* /*eventInfo*/)
{
- LogInfo("mediacontrolRotateHorizontal called");
+ LogDebug("mediacontrolRotateHorizontal called");
Assert(data);
Assert(obj);
ViewLogic* This = static_cast<ViewLogic*>(data);
Evas_Object* obj,
void* /*eventInfo*/)
{
- LogInfo("mediacontrolRotateVertical called");
+ LogDebug("mediacontrolRotateVertical called");
Assert(data);
Assert(obj);
ViewLogic* This = static_cast<ViewLogic*>(data);
Evas_Object* obj,
void* /*eventInfo*/)
{
- LogInfo("mediacontrolRotateExit called");
+ LogDebug("mediacontrolRotateExit called");
Assert(data);
Assert(obj);
ViewLogic* This = static_cast<ViewLogic*>(data);
Eina_Bool ViewLogic::orientationThresholdTimerCallback(void* data)
{
- LogInfo("orientationThresholdTimerCallback");
+ LogDebug("orientationThresholdTimerCallback");
ViewLogic* This = static_cast<ViewLogic*>(data);
if (This->m_deferredRotateAngle ==
Evas_Object* /*obj*/,
void* /*eventInfo*/)
{
- LogInfo("called");
+ LogDebug("called");
Assert(data);
ViewLogic* This = static_cast<ViewLogic*>(data);
This->m_isPopupReplyWait = true;
Evas_Object* /*obj*/,
void* /*eventInfo*/)
{
- LogInfo("called");
+ LogDebug("called");
Assert(data);
ViewLogic* This = static_cast<ViewLogic*>(data);
This->m_isPopupReplyWait = false;
void ViewLogic::requestUrlBlocked(const std::string& blockedUrl)
{
- LogInfo("enter");
+ LogDebug("enter");
// block this page and open it in browser
LogDebug("Request was blocked : " << blockedUrl);
// get latest ewkView
m_currentEwkView = m_ewkViewList.back();
- // resume ewkView
- /* In case we support many pages in parallel
- * then view is not suspended*/
- //resumeEwkView(m_currentEwkView);
setEwkViewVisible(m_currentEwkView);
// show ewkView
bool createEwkView(Evas* canvas);
void prepareEwkView(Evas_Object *wkView);
void removeEwkView(Evas_Object *wkView);
- void resumeEwkView(Evas_Object *wkView);
- void suspendEwkView(Evas_Object *wkView);
void setEwkViewVisible(Evas_Object *wkView);
void setEwkViewInvisible(Evas_Object *wkView);
void resumeWebkit(Evas_Object *wkView);
const char* const ELM_SWALLOW_IDFIELD = "elm.swallow.idfield";
const char* const ELM_SWALLOW_PASSWDFIELD = "elm.swallow.passwdfield";
-const char* const DAEMON_EDJ_PATH = "/usr/share/edje/wrt/Daemon.edj";
const char* const GROUP_NAME_AUTHENTICATION_CHALLENGE_POPUP =
"authChallengePopup";
const char* const THEME_EDITFIELD = "editfield";
Evas_Object* popupLayout = elm_layout_add(popup);
elm_layout_file_set(popupLayout,
- DAEMON_EDJ_PATH,
+ WRT_EDJ_PATH,
GROUP_NAME_AUTHENTICATION_CHALLENGE_POPUP);
evas_object_size_hint_weight_set(popupLayout,
EVAS_HINT_EXPAND,
PermissionData* data)
{
LogDebug("askUserForGeolocationPermission called");
- std::string body = WRT_BODY_PS_REQUESTS_YOUR_LOCATION;
std::string origin = DPL::ToUTF8String(data->m_originData.origin.host);
if (origin.empty()) {
- char* name = NULL;
- if (app_get_name(&name) == APP_ERROR_NONE) {
- origin = name;
- free(name);
- } else {
- origin = "application";
- }
+ origin = "local";
}
- body.replace(body.find(WRT_PS),
- std::string(WRT_PS).size(),
- origin.c_str());
+ std::string appname;
+ char* name = NULL;
+ if (app_get_name(&name) == APP_ERROR_NONE) {
+ appname = name;
+ free(name);
+ } else {
+ appname = "application";
+ }
+
+ std::string body =
+ WrtText::replacePS({WRT_POP_GEOLOCATION_PERMISSION, appname, origin});
Evas_Object* popup = createPopup(window,
body.c_str(),
WRT_BODY_REMEMBER_PREFERENCE,
void OrientationSupport::setEwkOrientation(Evas_Object* ewk,
int angle)
{
- LogInfo("setOrientation called");
+ LogDebug("setOrientation called");
ewk_view_orientation_send(ewk, angle);
}
} // ViewModule
Evas_Object* window,
Evas_Object* wkView)
{
- LogInfo("HandleTizenScheme called");
+ LogDebug("HandleTizenScheme called");
if (!uri) {
LogError("Empty uri");
return false;
}
if (strncmp(uri, TIZEN_EXIT, strlen(TIZEN_EXIT)) == 0) {
- LogInfo("Tizen scheme: " << uri << " exit");
+ LogDebug("Tizen scheme: " << uri << " exit");
ecore_idler_add(exitAppIdlerCallback, NULL);
return true;
} else if (strncmp(uri, TIZEN_HIDE, strlen(TIZEN_HIDE)) == 0) {
- LogInfo("Tizen scheme: " << uri << " hide");
+ LogDebug("Tizen scheme: " << uri << " hide");
elm_win_lower(window);
return true;
} else if (strncmp(uri,
TIZEN_CHANGE_USERAGNET,
strlen(TIZEN_CHANGE_USERAGNET)) == 0)
{
- LogInfo("Tizen scheme: " << uri << " change UA");
+ LogDebug("Tizen scheme: " << uri << " change UA");
const char* userAgentString = strstr(uri, "=");
if (NULL == userAgentString) {
LogDebug("UA string is NULL");
bool showWebNotification(WebNotificationDataPtr notiData)
{
- LogInfo("showWebNotification called");
+ LogDebug("showWebNotification called");
/* TODO : register notification to database */
return notificationShow(notiData);
//check uri is "http", https" or not
bool validIconURL = true;
- LogInfo("url path is " << notiData->m_iconURL);
+ LogDebug("url path is " << notiData->m_iconURL);
if (isExternalUri(PATTERN_CHECK_EXTERNAL, notiData->m_iconURL)) {
//download image from url
validIconURL = downloadImage(notiData);
"Fail to insert notification: " << error);
}
- LogInfo("Notification is inserted!");
- LogInfo("noti id =[" << notiData->m_id << "] " <<
+ LogDebug("Notification is inserted!");
+ LogDebug("noti id =[" << notiData->m_id << "] " <<
"priv_id =[" << priv_id << "]");
if (noti_h) {
bool notificationHide(WebNotificationDataPtr notiData)
{
- LogInfo("notificationHide called");
+ LogDebug("notificationHide called");
Assert(notiData);
return true;
bool isExternalUri(const std::string &pattern, const std::string &uri)
{
- LogInfo("isExternalUri called");
+ LogDebug("isExternalUri called");
pcrecpp::RE_Options pcreOpt;
pcreOpt.set_caseless(true);
bool downloadImage(WebNotificationDataPtr notiData)
{
- LogInfo("downloadImage called");
+ LogDebug("downloadImage called");
Assert(notiData);
// download path is
SET(WRT_CLIENT_SRCS
${PROJECT_SOURCE_DIR}/src/wrt-client/window_data.cpp
+ ${PROJECT_SOURCE_DIR}/src/wrt-client/client_command_line_parser.cpp
+ ${PROJECT_SOURCE_DIR}/src/wrt-client/client_ide_support.cpp
${PROJECT_SOURCE_DIR}/src/wrt-client/client_service_support.cpp
${PROJECT_SOURCE_DIR}/src/wrt-client/splash_screen_support.cpp
${PROJECT_SOURCE_DIR}/src/wrt-client/wrt-client.cpp
appcore-efl
capi-appfw-application
dpl-wrt-dao-ro
- wrt-plugin-js-overlay
wrt-popup-wrt-runner
appsvc
+ efl-assist
+ libsystemd-daemon
REQUIRED
)
INCLUDE_DIRECTORIES(
${PROJECT_SOURCE_DIR}/src/wrt-client
${PROJECT_SOURCE_DIR}/src/api_new
+ ${PROJECT_SOURCE_DIR}/src/domain
${PROJECT_SOURCE_DIR}/src/wrt-launchpad-daemon/include
${CLIENT_DEP_INCLUDE_DIRS}
${SMACK_LABELING_SUPPORT_INCLUDES}
TARGET_LINK_LIBRARIES(${TARGET_WRT_CLIENT}
${CLIENT_DEP_LIBRARIES}
${TARGET_CORE_MODULE_LIB}
+ ${TARGET_WRT_ENGINE_STATIC}
${SMACK_LABELING_SUPPORT_STATIC}
"-pie"
)
void AutoRotationSupport::setOrientation(Evas_Object* window, Evas_Object* ewkView, SplashScreenSupport* splashScreen)
{
- LogInfo("setOrientation");
+ LogDebug("setOrientation");
int winAngle = elm_win_rotation_get(window);
if (splashScreen && splashScreen->isShowing())
ewkView,
OrientationAngle::W3C::Landscape::SECONDARY);
} else {
- LogInfo("unknown angle is returned");
+ LogDebug("unknown angle is returned");
}
}
--- /dev/null
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+/**
+ * @file client_command_line_parser.cpp
+ * @author Jihoon Chung (jihoon.chung@samsung.com)
+ */
+
+#include "client_command_line_parser.h"
+
+#include <cstddef>
+#include <sstream>
+#include <string>
+
+#include <dpl/log/log.h>
+#include <dpl/optional_typedefs.h>
+#include <dpl/wrt-dao-ro/common_dao_types.h>
+
+namespace ClientModule {
+namespace {
+
+std::string parseIdField(int argc, char **argv)
+{
+ if (argv[0] == NULL) {
+ return "";
+ }
+
+ std::string arg = argv[0];
+ if (arg.empty()) {
+ return "";
+ }
+
+ if (arg.find("wrt-client") != std::string::npos) {
+ if (argc <= 1) {
+ return "";
+ }
+
+ arg = argv[1];
+
+ if (arg == "-h" || arg == "--help") {
+ return "";
+ } else if (arg == "-l" ||
+ arg == "--launch" ||
+ arg == "-t" ||
+ arg == "--tizen")
+ {
+ if (argc != 3) {
+ return "";
+ }
+ return argv[2];
+ } else {
+ return "";
+ }
+ } else {
+ std::size_t pos = arg.find_last_of('/');
+ if (pos != std::string::npos) {
+ arg = arg.erase(0, pos + 1);
+ }
+ return arg;
+ }
+}
+
+DPL::OptionalUInt getIndex(const std::string& tizenId)
+{
+ std::size_t pos =
+ tizenId.find(WrtDB::AppControlPrefix::PROCESS_PREFIX);
+ if (pos != std::string::npos) {
+ std::string index = tizenId.substr(pos);
+ index.erase(strlen(WrtDB::AppControlPrefix::PROCESS_PREFIX));
+ std::stringstream s(index);
+ unsigned int appControlIndex;
+ s >> appControlIndex;
+ return appControlIndex;
+ }
+ return DPL::OptionalUInt::Null;
+}
+
+std::string removeIndex(const std::string& tizenId)
+{
+ std::string id = tizenId;
+ std::size_t pos =
+ id.find(WrtDB::AppControlPrefix::PROCESS_PREFIX);
+ if (pos != std::string::npos) {
+ id.erase(pos);
+ }
+ return id;
+}
+}
+
+std::string CommandLineParser::getTizenId(int argc, char **argv)
+{
+ std::string id = parseIdField(argc, argv);
+ if (id.empty()) {
+ return "";
+ }
+ return removeIndex(id);
+}
+
+DPL::OptionalUInt CommandLineParser::getAppControlIndex(int argc, char **argv)
+{
+ std::string id = parseIdField(argc, argv);
+ if (id.empty()) {
+ return DPL::OptionalUInt::Null;
+ }
+ return getIndex(id);
+}
+} // ClientModule
--- /dev/null
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+ /**
+ * @file client_command_line_parser.h
+ * @author Jihoon Chung (jihoon.chung@samsung.com)
+ */
+#ifndef CLIENT_COMMAND_LINE_PARSER_H_
+#define CLIENT_COMMAND_LINE_PARSER_H_
+
+#include <dpl/optional_typedefs.h>
+
+namespace ClientModule {
+namespace CommandLineParser {
+std::string getTizenId(int argc, char **argv);
+DPL::OptionalUInt getAppControlIndex(int argc, char **argv);
+} // CommandLineParser
+} // ClientModule
+#endif // CLIENT_COMMAND_LINE_PARSER_H_
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+/**
+ * @file client_ide_support.cpp
+ * @author Jihoon Chung (jihoon.chung@samsung.com)
+ */
+
+#include "client_ide_support.h"
+#include <string>
+#include <dpl/log/log.h>
+#include <dpl/exception.h>
+
+#include <appsvc.h>
+#include <bundle.h>
+
+namespace ClientModule {
+namespace {
+const char* const KEY_DEBUG = "debug";
+const char* const KEY_PORT = "port";
+const char* const VALUE_TRUE = "true";
+}
+
+bool IDESupport::getDebugMode(bundle* b)
+{
+ if (!b) {
+ LogWarning("bundle is empty");
+ return false;
+ }
+
+ const char* value = bundle_get_val(b, KEY_DEBUG);
+ if (value != NULL && !strcmp(value, VALUE_TRUE)) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool IDESupport::sendReply(bundle* b, unsigned int portNum)
+{
+ bundle* request = NULL;
+ if (appsvc_create_result_bundle(b, &request) != APPSVC_RET_OK) {
+ LogWarning("Fail to create result bundle");
+ return false;
+ }
+
+ char port[10] = {0,};
+ sprintf(port, "%u", portNum);
+ if (appsvc_add_data(request, KEY_PORT, port) != APPSVC_RET_OK) {
+ LogWarning("Fail to add data");
+ bundle_free(request);
+ return false;
+ }
+
+ if (appsvc_send_result(request, APPSVC_RES_OK) != APPSVC_RET_OK) {
+ LogWarning("Fail to send result");
+ bundle_free(request);
+ return false;
+ }
+
+ bundle_free(request);
+ return true;
+}
+
+} // ClientModule
--- /dev/null
+/*
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * 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.
+ */
+ /**
+ * @file client_ide_support.h
+ * @author Jihoon Chung (jihoon.chung@samsung.com)
+ */
+#ifndef CLIENT_IDE_SUPPORT_H_
+#define CLIENT_IDE_SUPPORT_H_
+
+#include <bundle.h>
+
+namespace ClientModule {
+namespace IDESupport {
+bool getDebugMode(bundle* b);
+bool sendReply(bundle* b, unsigned int portNum);
+} // IDESupport
+} // ClientModule
+#endif // CLIENT_IDE_SUPPORT_H_
\ No newline at end of file
void SplashScreenSupport::startSplashScreen()
{
- LogInfo("splashImageOn");
+ LogDebug("splashImageOn");
if (m_initialized)
{
void SplashScreenSupport::stopSplashScreen()
{
- LogInfo("splashImageOff");
+ LogDebug("splashImageOff");
if (m_isShowing)
{
#include <dpl/log/log.h>
#include <dpl/foreach.h>
+#include <efl_assist_screen_reader.h>
+
namespace {
-char const* const PLATFORM_EDJ_PATH = "/usr/share/edje/wrt/Platform.edj";
-char const* const DAEMON_EDJ_PATH = "/usr/share/edje/wrt/Daemon.edj";
-char const* const THEME_EDJ_PATH = "/usr/share/edje/wrt/wrt_theme.edj";
-char const* const ELM_STATE_SHOW_CONTENT = "elm,state,show,content";
-char const* const ELM_SWALLOW_CONTENT = "elm.swallow.content";
-char const* const ELM_SWALLOW_BACKWARD = "elm.swallow.backward";
-char const* const ELM_SWALLOW_PROGRESS = "elm.swallow.progress";
-char const* const ELM_STATE_TOOLBAR_INSTANT_OPEN = "elm,state,toolbar,instant_open";
-char const* const ELM_STATE_TOOLBAR_INSTANT_CLOSE = "elm,state,toolbar,instant_close";
-
-const char *ELM_EVENT_PROFILE_CHANGED = "profile,changed";
-
-char const* const ELM = "elm";
-char const* const LAYOUT = "layout";
-char const* const APPLICATION = "application";
-char const* const INDICATOR = "indicator";
-char const* const NOINDICATOR = "noindicator";
-char const* const INTERNAL_LAYOUT = "internal_layout";
-char const* const FLOATBACKWARD_BUTTON_STYLE = "wrt/backward";
+const char* const PROFILE_CHANGED = "profile,changed";
+const char* const DESKTOP_ICON_PATH =
+ "/opt/share/icons/default/small/tizenScmgz.png";
const std::string DESKTOP_PROFILE("desktop");
const int PROGRESS_H = 10;
} // anonymous namespace
WindowData::WindowData(unsigned long pid, bool manualInit) :
m_win(NULL),
- m_user_layout(NULL),
m_conformant(NULL),
- m_platform_layout(NULL),
- m_navigation(NULL),
- m_floatBackButton(NULL),
+ m_topLayout(NULL),
+ m_naviframe(NULL),
+ m_mainLayout(NULL),
m_progressbar(NULL),
m_ctxpopup(NULL),
m_initialized(false),
{
Assert(m_win != NULL && "m_win is null");
- if (m_initialized == true)
- {
- LogInfo("Already initilized");
+ if (m_initialized == true) {
+ LogDebug("Already initilized");
return;
}
- // import button theme
- elm_theme_overlay_add(NULL, THEME_EDJ_PATH);
-
m_conformant = createConformant(m_win);
evas_object_show(m_conformant);
- m_platform_layout = createPlatformLayout(m_conformant);
- evas_object_show(m_platform_layout);
- m_navigation = createNavigationBar(m_platform_layout);
- evas_object_show(m_navigation);
- m_user_layout = createUserLayout(m_navigation);
- evas_object_show(m_user_layout);
- m_focus = createFocus(m_user_layout);
+ m_topLayout = createTopLayout(m_conformant);
+ evas_object_show(m_topLayout);
+ m_naviframe = createNaviframe(m_topLayout);
+ evas_object_show(m_naviframe);
+ m_mainLayout = createMainLayout(m_naviframe);
+ evas_object_show(m_mainLayout);
+ m_focus = createFocus(m_mainLayout);
evas_object_show(m_focus);
- m_progressbar = createProgressBar(m_win, m_user_layout);
+ m_progressbar = createProgressBar(m_win, m_mainLayout);
evas_object_show(m_progressbar);
UG_INIT_EFL(m_win, UG_OPT_INDICATOR_ENABLE);
m_initialized = true;
}
-void WindowData::setEvasObjectForLayout(Evas_Object* obj)
+bool WindowData::initScreenReaderSupport(bool isSupportAccessibility)
+{
+ LogDebug("called");
+ Assert(m_win != NULL && "x window is Null");
+ return ea_screen_reader_support_set(
+ m_win,
+ isSupportAccessibility ? EINA_TRUE : EINA_FALSE);
+}
+
+Evas_Object* WindowData::getEvasObject(Layer layer)
+{
+ EvasObjectDataIt it = m_evasObjectData.find(layer);
+ if (it == m_evasObjectData.end()) {
+ return NULL;
+ }
+ return it->second;
+}
+
+void WindowData::setWebview(Evas_Object* webview)
{
- elm_object_part_content_set(m_focus, ELM_SWALLOW_CONTENT, obj);
+ elm_object_part_content_set(m_focus, "elm.swallow.content", webview);
elm_object_focus_set(m_focus, EINA_TRUE);
}
-void WindowData::unsetEvasObjectForLayout()
+void WindowData::unsetWebview()
{
- elm_object_part_content_unset(m_focus, ELM_SWALLOW_CONTENT);
+ elm_object_part_content_unset(m_focus, "elm.swallow.content");
}
-void WindowData::toggleIndicator(bool fullscreen)
+void WindowData::smartCallbackAdd(
+ Layer layer,
+ const char* event,
+ Evas_Smart_Cb callback,
+ const void* data)
{
- LogDebug("fullscreen=" << (fullscreen ? "true" : "false"));
+ Evas_Object* obj = getEvasObject(layer);
+ if (!obj) {
+ LogError("Fail to get Evas_Object");
+ return;
+ }
+ evas_object_smart_callback_add(obj, event, callback, data);
+ return;
+}
- if (!fullscreen) {
- elm_win_indicator_mode_set(m_win, ELM_WIN_INDICATOR_SHOW);
- } else {
- elm_win_indicator_mode_set(m_win, ELM_WIN_INDICATOR_HIDE);
+void WindowData::smartCallbackDel(
+ Layer layer,
+ const char* event,
+ Evas_Smart_Cb callback)
+{
+ Evas_Object* obj = getEvasObject(layer);
+ if (!obj) {
+ LogError("Fail to get Evas_Object");
+ return;
+ }
+ evas_object_smart_callback_del(m_focus, event, callback);
+}
+
+void WindowData::signalEmit(Layer layer,
+ const char* emission,
+ const char* source)
+{
+ Evas_Object* obj = getEvasObject(layer);
+ if (!obj) {
+ LogError("Fail to get Evas_Object");
+ return;
}
+ edje_object_signal_emit(elm_layout_edje_get(obj), emission, source);
}
-void WindowData::setViewMode(
- bool fullscreen,
- bool backbutton)
+void WindowData::setViewMode(bool fullscreen, bool backbutton)
{
- LogDebug("setViewMode");
LogDebug("fullscreen: " << fullscreen);
LogDebug("backbutton: " << backbutton);
{
LogDebug("setOrientation");
Assert(m_win);
- elm_win_wm_rotation_preferred_rotation_set(
- m_win,
- angle);
+ elm_win_wm_rotation_preferred_rotation_set(m_win, angle);
}
-void WindowData::createFloatBackButton()
+void WindowData::toggleFullscreen(bool fullscreen)
{
- // Add float backbutton on the left coner
- m_floatBackButton = elm_button_add(m_user_layout);
- elm_object_style_set(m_floatBackButton, FLOATBACKWARD_BUTTON_STYLE);
- elm_object_part_content_set(m_user_layout,
- ELM_SWALLOW_BACKWARD,
- m_floatBackButton);
- evas_object_show(m_floatBackButton);
+ toggleIndicator(fullscreen || m_currentViewModeFullScreen);
+}
+
+void WindowData::showCtxpopup(void)
+{
+ m_ctxpopup = createCtxPopup(m_naviframe);
+ if (!m_ctxpopup) {
+ return;
+ }
+ evas_object_show(m_ctxpopup);
+}
+
+void WindowData::setCtxpopupItemData(CtxpopupItemDataList data)
+{
+ m_ctxpopupItemDataList = data;
+}
+
+void WindowData::updateProgress(double value)
+{
+ int x, y, w, h;
+ evas_object_geometry_get(m_mainLayout, &x, &y, &w, &h);
+ evas_object_resize(m_progressbar,
+ static_cast<int>(w * value),
+ static_cast<int>(PROGRESS_H * elm_config_scale_get()));
+}
+
+void WindowData::setEvasObjectData(Layer layer, Evas_Object* obj)
+{
+ m_evasObjectData[layer] = obj;
}
Evas_Object* WindowData::createWindow(unsigned long pid)
evas_object_resize(window, w, h);
evas_object_smart_callback_add(window,
- ELM_EVENT_PROFILE_CHANGED,
+ PROFILE_CHANGED,
winProfileChangedCallback,
this);
+ setEvasObjectData(Layer::WINDOW, window);
return window;
}
Evas_Object* WindowData::createConformant(Evas_Object* parent)
{
Assert(parent != NULL && "Parent is null");
- Evas_Object* conformant = elm_conformant_add(parent);
-
- evas_object_size_hint_weight_set(
- conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_win_resize_object_add(parent, conformant);
- return conformant;
+ Evas_Object* obj = elm_conformant_add(parent);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(parent, obj);
+ setEvasObjectData(Layer::CONFORMANT, obj);
+ return obj;
}
-Evas_Object* WindowData::createPlatformLayout(Evas_Object* parent)
+Evas_Object* WindowData::createTopLayout(Evas_Object* parent)
{
- Evas_Object* platform_layout = elm_layout_add(parent);
-
- ADD_PROFILING_POINT("elm_layout_theme_set", "start");
- elm_layout_file_set(platform_layout, PLATFORM_EDJ_PATH, "platformlayout");
- ADD_PROFILING_POINT("elm_layout_theme_set", "stop");
-
- evas_object_size_hint_align_set(platform_layout,
- EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(platform_layout,
- EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
-
- elm_object_content_set(parent, platform_layout);
- edje_object_signal_emit(
- elm_layout_edje_get(platform_layout), ELM_STATE_SHOW_CONTENT, ELM);
- return platform_layout;
+ Assert(parent != NULL && "Parent is null");
+ Evas_Object* obj = elm_layout_add(parent);
+ elm_layout_theme_set(obj, "layout", "application", "default");
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_content_set(parent, obj);
+ setEvasObjectData(Layer::TOP_LAYOUT, obj);
+ return obj;
}
-Evas_Object* WindowData::createNavigationBar(Evas_Object* parent)
+Evas_Object* WindowData::createNaviframe(Evas_Object* parent)
{
- Assert(parent != NULL && "Parent for naviframe is null");
- Evas_Object* navigation = elm_naviframe_add(parent);
-
- evas_object_size_hint_align_set(navigation,
- EVAS_HINT_FILL,
- EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(navigation,
- EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- elm_object_part_content_set(parent, ELM_SWALLOW_CONTENT, navigation);
- //elm_object_content_set(parent, navigation);
- return navigation;
+ Assert(parent != NULL && "Parent is null");
+ Evas_Object* obj = elm_naviframe_add(parent);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(parent, "elm.swallow.content", obj);
+ setEvasObjectData(Layer::NAVIFRAME, obj);
+ return obj;
}
-Evas_Object* WindowData::createUserLayout(Evas_Object* parent)
+Evas_Object* WindowData::createMainLayout(Evas_Object* parent)
{
- Assert(parent != NULL && "Parent for User Layout is null");
- Evas_Object* layout = elm_layout_add(parent);
- elm_layout_file_set(layout, DAEMON_EDJ_PATH, "client");
- evas_object_size_hint_weight_set(
- layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
+ Assert(parent != NULL && "Parent is null");
+ Evas_Object* obj = elm_layout_add(parent);
+ elm_layout_file_set(obj, WRT_EDJ_PATH, "web-application");
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
ADD_PROFILING_POINT("elm_naviframe_item_push", "start");
- Elm_Object_Item* naviIt = elm_naviframe_item_push(
- /* Evas_Object *obj */
- parent,
- /* const char *title_label */
- NULL,
- /* Evas_Object *prev_btn */
- NULL,
- /* Evas_Object *next_btn */
- NULL,
- /* Evas_Object *content */
- layout,
- /* const char *item_style */
- NULL);
+ Elm_Object_Item* naviIt =
+ elm_naviframe_item_push(
+ parent, // Evas_Object* obj
+ NULL, // const char* title_label
+ NULL, // Evas_Object* prev_btn
+ NULL, // Evas_Object* next_btn
+ obj, // Evas_Object* content
+ NULL); // const char* item_style
ADD_PROFILING_POINT("elm_naviframe_item_push", "stop");
elm_naviframe_item_title_visible_set(naviIt, EINA_FALSE);
- return layout;
+ setEvasObjectData(Layer::MAIN_LAYOUT, obj);
+ return obj;
}
Evas_Object* WindowData::createFocus(Evas_Object* parent)
{
- Assert(parent != NULL && "Parent for Focus is null");
+ Assert(parent != NULL && "Parent is null");
// ewkview isn't elementary widget style. This is reason why ewkview focus
// doesn't restore after focus-out and focus-in. To support focus restore
// for ewkview, WRT add selectable elementary(button) to manage focus
- Evas_Object* focus = elm_button_add(parent);
- elm_object_style_set(focus, "focus");
- elm_object_part_content_set(parent, ELM_SWALLOW_CONTENT, focus);
- evas_object_size_hint_weight_set(focus,
- EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(focus, EVAS_HINT_FILL, EVAS_HINT_FILL);
- return focus;
+ Evas_Object* obj = elm_button_add(parent);
+ elm_object_style_set(obj, "transparent");
+ elm_object_part_content_set(parent, "elm.swallow.content", obj);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ setEvasObjectData(Layer::FOCUS, obj);
+ return obj;
}
Evas_Object* WindowData::createProgressBar(Evas_Object* window, Evas_Object* parent)
{
Assert(parent != NULL && "Parent is null");
- Evas_Object* progressbar = evas_object_rectangle_add(evas_object_evas_get(window));
- evas_object_color_set(progressbar, 91, 166, 255, 255);
- elm_object_part_content_set(parent, ELM_SWALLOW_PROGRESS, progressbar);
- evas_object_resize(progressbar, 0, 0);
- return progressbar;
+ Evas_Object* obj = evas_object_rectangle_add(evas_object_evas_get(window));
+ evas_object_color_set(obj, 91, 166, 255, 255);
+ elm_object_part_content_set(parent, "elm.swallow.progress", obj);
+ evas_object_resize(obj, 0, 0);
+ setEvasObjectData(Layer::PROGRESSBAR, obj);
+ return obj;
}
Evas_Object* WindowData::createCtxPopup(Evas_Object* parent)
return object;
}
-void WindowData::setDesktopIcon()
-{
- // set window icon
- Evas_Object *icon = evas_object_image_add(evas_object_evas_get(m_win));
- evas_object_image_file_set(icon,
- "/opt/share/icons/default/small/tizenScmgz.png",
- NULL);
- elm_win_icon_object_set(m_win, icon);
-}
-
-void WindowData::addFloatBackButtonCallback(
- const char* event,
- CallbackType callback,
- const void* data)
-{
- Assert(m_floatBackButton != NULL && "m_floatBackButton is null");
- evas_object_smart_callback_add(m_floatBackButton, event, callback, data);
-}
-
-void* WindowData::delFloatBackButtonCallback(
- const char* event,
- CallbackType callBack)
-{
- Assert(m_floatBackButton != NULL && "m_floatBackButton is null");
- return evas_object_smart_callback_del(m_floatBackButton, event, callBack);
-}
-
-void WindowData::userlayoutCallbackAdd(
- const Evas_Callback_Type event,
- EvasCallbackType callback,
- const void* data)
-{
- Assert(m_user_layout != NULL && "m_user_layout is null");
- evas_object_event_callback_add(m_user_layout, event, callback, data);
-}
-
-void* WindowData::userlayoutCallbackDel(
- const Evas_Callback_Type event,
- EvasCallbackType callBack)
-{
- Assert(m_user_layout != NULL && "m_user_layout is null");
- return evas_object_event_callback_del(m_user_layout, event, callBack);
-}
-
-void WindowData::focusCallbackAdd(
- const char* event,
- CallbackType callback,
- const void* data)
-{
- Assert(m_focus != NULL && "m_focus is null");
- evas_object_smart_callback_add(m_focus, event, callback, data);
-}
-
-void* WindowData::focusCallbackDel(
- const char* event,
- CallbackType callback)
-{
- Assert(m_focus != NULL && "m_focus is null");
- return evas_object_smart_callback_del(m_focus, event, callback);
-}
-
-void WindowData::emitSignalForUserLayout(
- const char* emission, const char* source)
-{
- LogInfo("emitSignalForUserLayout called");
- Assert(m_user_layout != NULL && "m_user_layout is null");
- Assert(emission != NULL && "emission is null");
- Assert(source != NULL && "source is null");
-
- edje_object_signal_emit(
- elm_layout_edje_get(m_user_layout), emission, source);
-}
-
-void WindowData::toggleFullscreen(bool fullscreen)
-{
- LogDebug(__PRETTY_FUNCTION__);
- toggleIndicator(fullscreen || m_currentViewModeFullScreen);
-}
-
-void WindowData::winProfileChangedCallback(void *data,
- Evas_Object* /*obj*/,
- void* /*eventInfo*/)
+void WindowData::toggleIndicator(bool fullscreen)
{
- LogDebug("winProfileChangedCallback");
- if (data == NULL) {
- return;
- }
- WindowData* This = static_cast<WindowData *>(data);
- const char *profile = elm_config_profile_get();
-
- if (DESKTOP_PROFILE == profile) {
- elm_win_indicator_mode_set(This->m_win, ELM_WIN_INDICATOR_HIDE);
- This->setDesktopIcon();
- }
-}
+ LogDebug("fullscreen=" << (fullscreen ? "true" : "false"));
-void WindowData::showCtxpopup(void)
-{
- m_ctxpopup = createCtxPopup(m_navigation);
- if (!m_ctxpopup) {
- return;
+ if (!fullscreen) {
+ elm_win_indicator_mode_set(m_win, ELM_WIN_INDICATOR_SHOW);
+ } else {
+ elm_win_indicator_mode_set(m_win, ELM_WIN_INDICATOR_HIDE);
}
- evas_object_show(m_ctxpopup);
-}
-
-void WindowData::setCtxpopupItemData(CtxpopupItemDataList data)
-{
- m_ctxpopupItemDataList = data;
-}
-
-void WindowData::updateProgress(double value)
-{
- int x, y, w, h;
- evas_object_geometry_get(m_user_layout, &x, &y, &w, &h);
- evas_object_resize(m_progressbar,
- static_cast<int>(w * value),
- static_cast<int>(PROGRESS_H * elm_config_scale_get()));
}
void WindowData::ctxpopupItemCallback(void* data,
WindowData* This = static_cast<WindowData*>(data);
This->m_ctxpopup = NULL;
}
+
+void WindowData::winProfileChangedCallback(void *data,
+ Evas_Object* /*obj*/,
+ void* /*eventInfo*/)
+{
+ LogDebug("winProfileChangedCallback");
+ if (data == NULL) {
+ return;
+ }
+ WindowData* This = static_cast<WindowData *>(data);
+ const char* profile = elm_config_profile_get();
+
+ if (DESKTOP_PROFILE == profile) {
+ elm_win_indicator_mode_set(This->m_win, ELM_WIN_INDICATOR_HIDE);
+ // set desktop icon
+ Evas_Object* icon =
+ evas_object_image_add(evas_object_evas_get(This->m_win));
+ evas_object_image_file_set(icon, DESKTOP_ICON_PATH, NULL);
+ elm_win_icon_object_set(This->m_win, icon);
+ }
+}
#include <string>
#include <list>
+#include <map>
#include <dpl/noncopyable.h>
-/*
- * Current layout structure
- *
- * m_win (elm_win)
- * m_platform_layout (elm_layout)
- * m_navigation (elm_navigation)
- * m_user_layout (elm_layout)
- * widget_area (elm_webview)
- *
- */
+enum class Layer {
+ WINDOW = 0,
+ CONFORMANT = 1,
+ TOP_LAYOUT = 2,
+ NAVIFRAME = 3,
+ MAIN_LAYOUT = 4,
+ FOCUS = 5,
+ PROGRESSBAR = 6
+};
class WindowData : private DPL::Noncopyable
{
- private:
- typedef void (*CallbackType)(
- void* data, Evas_Object* obj, void* event_info);
- typedef void (*EvasCallbackType)(
- void* data, Evas* evas, Evas_Object* obj, void* event_info);
- typedef Eina_Bool (*NaviframePopCallbackType)(
- void* data, Elm_Object_Item* it);
-
public:
typedef DPL::FastDelegate0<void> CtxpopupCallbackType;
struct CtxpopupItemData {
};
typedef std::list<CtxpopupItemData> CtxpopupItemDataList;
- Evas_Object* m_win;
- Evas_Object* m_user_layout;
-
explicit WindowData(unsigned long pid, bool manualInit = false);
virtual ~WindowData();
void init();
- void setEvasObjectForLayout(Evas_Object* evas_object);
- void unsetEvasObjectForLayout();
- void addFloatBackButtonCallback(
- const char* event,
- CallbackType callback,
- const void* data);
- void* delFloatBackButtonCallback(
- const char* event,
- CallbackType callBack);
- void userlayoutCallbackAdd(
- const Evas_Callback_Type event,
- EvasCallbackType callback,
- const void* data);
- void* userlayoutCallbackDel(
- const Evas_Callback_Type event,
- EvasCallbackType callback);
- void focusCallbackAdd(
+ bool initScreenReaderSupport(bool isSupportAccessibility);
+
+ Evas_Object* getEvasObject(Layer layer);
+ void setWebview(Evas_Object* evas_object);
+ void unsetWebview();
+
+ void smartCallbackAdd(
+ Layer layer,
const char* event,
- CallbackType callback,
+ Evas_Smart_Cb callback,
const void* data);
- void* focusCallbackDel(
+ void smartCallbackDel(
+ Layer layer,
const char* event,
- CallbackType callback);
- void emitSignalForUserLayout(
- const char* emission,
- const char* source);
- void setViewMode(
- bool fullscreen,
- bool backbutton);
+ Evas_Smart_Cb callback);
+ void signalEmit(Layer layer, const char* emission, const char* source);
+
+ void setViewMode(bool fullscreen, bool backbutton);
void setOrientation(int angle);
void toggleFullscreen(bool fullscreen);
- static void winProfileChangedCallback(void *data,
- Evas_Object * obj,
- void *event_info);
void showCtxpopup(void);
void setCtxpopupItemData(CtxpopupItemDataList data);
void updateProgress(double value);
- protected:
+ private:
+ Evas_Object* m_win;
Evas_Object* m_conformant;
- Evas_Object* m_platform_layout;
- Evas_Object* m_navigation;
+ Evas_Object* m_topLayout;
+ Evas_Object* m_naviframe;
+ Evas_Object* m_mainLayout;
Evas_Object* m_focus;
- Evas_Object* m_floatBackButton;
Evas_Object* m_progressbar;
Evas_Object* m_ctxpopup;
bool m_initialized;
bool m_currentViewModeFullScreen;
CtxpopupItemDataList m_ctxpopupItemDataList;
+ typedef std::map<Layer, Evas_Object*> EvasObjectData;
+ typedef std::map<Layer, Evas_Object*>::iterator EvasObjectDataIt;
+ EvasObjectData m_evasObjectData;
+ void setEvasObjectData(Layer layer, Evas_Object* obj);
+
Evas_Object* createWindow(unsigned long pid);
Evas_Object* createConformant(Evas_Object* parent);
- Evas_Object* createPlatformLayout(Evas_Object* parent);
- Evas_Object* createNavigationBar(Evas_Object* parent);
- Evas_Object* createUserLayout(Evas_Object* parent);
+ Evas_Object* createTopLayout(Evas_Object* parent);
+ Evas_Object* createNaviframe(Evas_Object* parent);
+ Evas_Object* createMainLayout(Evas_Object* parent);
Evas_Object* createFocus(Evas_Object* parent);
Evas_Object* createProgressBar(Evas_Object* window, Evas_Object* parent);
Evas_Object* createCtxPopup(Evas_Object* parent);
- void alignProgressPosition();
void toggleIndicator(bool fullscreen);
- void createFloatBackButton();
- void setDesktopIcon();
static void ctxpopupItemCallback(void* data,
Evas_Object* obj,
void* eventInfo);
static void ctxpopupDismissedCallback(void* data,
Evas_Object* obj,
void* eventInfo);
+ static void winProfileChangedCallback(void* data,
+ Evas_Object* obj,
+ void* eventInfo);
+
};
#endif /* WINDOW_INITIALIZE_H_ */
#include <dpl/log/log.h>
#include <dpl/optional_typedefs.h>
#include <dpl/exception.h>
-#include <common/application_data.h>
+#include <application_data.h>
#include <core_module.h>
#include <localization_setting.h>
#include <widget_deserialize_model.h>
#include <process_pool.h>
#include <process_pool_launchpad_util.h>
-#include <appsvc.h>
+#include "client_command_line_parser.h"
+#include "client_ide_support.h"
#include "client_service_support.h"
-
//W3C PACKAGING enviroment variable name
#define W3C_DEBUG_ENV_VARIABLE "DEBUG_LOAD_FINISH"
// window signal callback
-const char *EDJE_SHOW_BACKWARD_SIGNAL = "show,backward,signal";
const char *EDJE_SHOW_PROGRESS_SIGNAL = "show,progress,signal";
const char *EDJE_HIDE_PROGRESS_SIGNAL = "hide,progress,signal";
const std::string VIEWMODE_TYPE_FULLSCREEN = "fullscreen";
m_launched(false),
m_initializing(false),
m_initialized(false),
- m_sdkLauncherPid(0),
m_debugMode(false),
- m_debuggerPort(0),
m_returnStatus(ReturnStatus::Succeeded),
m_widgetState(WidgetState::WidgetState_Stopped),
m_initialViewMode(VIEWMODE_TYPE_MAXIMIZED),
m_currentViewMode(VIEWMODE_TYPE_MAXIMIZED),
- m_isWebkitFullscreen(false)
+ m_isWebkitFullscreen(false),
+ m_isFullscreenByPlatform(false)
{
Touch();
LogDebug("App Created");
void WrtClient::OnStop()
{
- LogInfo("Stopping Dummy Client");
+ LogDebug("Stopping Dummy Client");
}
void WrtClient::OnCreate()
{
- LogInfo("On Create");
+ LogDebug("On Create");
ADD_PROFILING_POINT("OnCreate callback", "point");
ewk_init();
}
return;
}
m_widget->Reset();
- m_windowData->emitSignalForUserLayout(EDJE_SHOW_BACKWARD_SIGNAL, "");
m_widgetState = WidgetState_Running;
} else {
- if (true == checkArgument()) {
- setStep();
- } else {
+ m_tizenId =
+ ClientModule::CommandLineParser::getTizenId(m_argc, m_argv);
+ if (m_tizenId.empty()) {
showHelpAndQuit();
+ } else {
+ m_appControlIndex =
+ ClientModule::CommandLineParser::getAppControlIndex(m_argc,
+ m_argv);
+ setDebugMode(b);
+ setStep();
}
}
Quit();
}
-bool WrtClient::checkArgument()
-{
- std::string tizenId = getTizenIdFromArgument(m_argc, m_argv);
-
- if (tizenId.empty()) {
- // Just show help
- return false;
- } else {
- std::size_t pos =
- tizenId.find(WrtDB::AppControlPrefix::PROCESS_PREFIX);
- if (pos != std::string::npos) {
- std::string id = tizenId.substr(pos);
- id.erase(strlen(WrtDB::AppControlPrefix::PROCESS_PREFIX));
- std::stringstream s(id);
- unsigned int appControlIndex;
- s >> appControlIndex;
- m_appControlIndex = appControlIndex;
- tizenId.erase(pos);
- LogDebug("app-control execute-index : " << appControlIndex);
- }
- m_tizenId = tizenId;
- LogDebug("Tizen id: " << m_tizenId);
- return true;
- }
-}
-
-std::string WrtClient::getTizenIdFromArgument(int argc, char **argv)
-{
- LogInfo("checkArgument");
- std::string arg = argv[0];
-
- if (arg.empty()) {
- return "";
- }
-
- if (arg.find("wrt-client") != std::string::npos) {
- if (argc <= 1) {
- return "";
- }
-
- arg = argv[1];
-
- if (arg == "-h" || arg == "--help") {
- return "";
- } else if (arg == "-l" || arg == "--launch" ||
- arg == "-t" || arg == "--tizen")
- {
- if (argc != 3) {
- return "";
- }
- return argv[2];
- } else {
- return "";
- }
- } else {
- // Launch widget based on application basename
- size_t pos = arg.find_last_of('/');
-
- if (pos != std::string::npos) {
- arg = arg.erase(0, pos + 1);
- }
-
- return arg;
- }
-}
-
void WrtClient::setStep()
{
- LogInfo("setStep");
+ LogDebug("setStep");
AddStep(&WrtClient::initStep);
-
- setSdkLauncherDebugData();
-
AddStep(&WrtClient::launchStep);
AddStep(&WrtClient::shutdownStep);
DPL::Event::ControllerEventHandler<NextStepEvent>::PostEvent(NextStepEvent());
}
-void WrtClient::setSdkLauncherDebugData()
-{
- LogDebug("setSdkLauncherDebugData");
-
- /* check bundle from sdk launcher */
- bundle *bundleFromSdkLauncher;
- bundleFromSdkLauncher = bundle_import_from_argv(m_argc, m_argv);
- const char *bundle_debug = bundle_get_val(bundleFromSdkLauncher, "debug");
- const char *bundle_pid = bundle_get_val(bundleFromSdkLauncher, "pid");
- if (bundle_debug != NULL && bundle_pid != NULL) {
- if (strcmp(bundle_debug, "true") == 0) {
- m_debugMode = true;
- m_sdkLauncherPid = atoi(bundle_pid);
- } else {
- m_debugMode = false;
- }
- }
- bundle_free(bundleFromSdkLauncher);
-}
-
-bool WrtClient::checkDebugMode(SDKDebugData* debugData)
+void WrtClient::setDebugMode(bundle* b)
{
- LogError("Checking for debug mode");
- Assert(m_dao);
-
- bool debugMode = debugData->debugMode;
-
- LogInfo("[DEBUG_MODE] Widget is launched in " <<
- (debugMode ? "DEBUG" : "RETAIL") <<
- " mode.");
-
- return debugMode;
+ m_debugMode = ClientModule::IDESupport::getDebugMode(b);
+ LogDebug("debug mode : " << m_debugMode);
}
void WrtClient::OnEventReceived(const NextStepEvent& /*event*/)
m_splashScreen->stopSplashScreenBuffered();
}
- SDKDebugData* debug = new SDKDebugData;
- debug->debugMode = m_debugMode;
- debug->pid = new unsigned long(getpid());
-
- LogInfo("Post result of launch");
-
- // Start inspector server, if current mode is debugger mode.
- // In the WK2 case, ewk_view_inspector_server_start should
- // be called after WebProcess is created.
- if (checkDebugMode(debug)) {
- debug->portnum =
- ewk_view_inspector_server_start(m_widget->GetCurrentWebview(), 0);
- if (debug->portnum == 0) {
- LogWarning("Failed to get portnum");
- } else {
- LogInfo("Assigned port number for inspector : "
- << debug->portnum);
- }
- } else {
- LogDebug("Debug mode is disabled");
- }
+ LogDebug("Post result of launch");
//w3c packaging test debug (message on 4>)
const char * makeScreen = getenv(W3C_DEBUG_ENV_VARIABLE);
PostEvent(NextStepEvent());
}
- if (debug->debugMode) {
- LogDebug("Send RT signal to wrt-launcher(pid: " << m_sdkLauncherPid);
- union sigval sv;
- /* send real time signal with result to wrt-launcher */
- if (webview) {
- LogDebug("userData->portnum : " << debug->portnum);
- sv.sival_int = debug->portnum;
- } else {
- sv.sival_int = -1;
+ if (m_debugMode) {
+ unsigned int portNum =
+ ewk_view_inspector_server_start(m_widget->GetCurrentWebview(), 0);
+ LogDebug("Port for inspector : " << portNum);
+ bool ret = ClientModule::IDESupport::sendReply(
+ ApplicationDataSingleton::Instance().getBundle(),
+ portNum);
+ if (!ret) {
+ LogWarning("Fail to send reply");
}
-
- bundle* request = NULL;
- appsvc_create_result_bundle(
- ApplicationDataSingleton::Instance().getBundle(),
- &request);
- char port[10] = {0,};
- sprintf(port, "%d", debug->portnum);
- appsvc_add_data(request, "port", port);
- appsvc_send_result(request, APPSVC_RES_OK);
}
ApplicationDataSingleton::Instance().freeBundle();
-
- LogDebug("Cleaning wrtClient launch resources...");
- delete debug->pid;
- delete debug;
}
void WrtClient::resetCallback(bool result)
if (m_settingList->getProgressBarPresence() == ProgressBar_Enable ||
m_currentViewMode == VIEWMODE_TYPE_WINDOWED)
{
- m_windowData->emitSignalForUserLayout(EDJE_SHOW_PROGRESS_SIGNAL, "");
+ m_windowData->signalEmit(Layer::MAIN_LAYOUT,
+ EDJE_SHOW_PROGRESS_SIGNAL,
+ "");
m_windowData->updateProgress(0);
}
}
if (m_settingList->getProgressBarPresence() == ProgressBar_Enable ||
m_currentViewMode == VIEWMODE_TYPE_WINDOWED)
{
- m_windowData->emitSignalForUserLayout(EDJE_HIDE_PROGRESS_SIGNAL, "");
+ m_windowData->signalEmit(Layer::MAIN_LAYOUT,
+ EDJE_HIDE_PROGRESS_SIGNAL,
+ "");
}
}
NextStepEvent());
}
-void WrtClient::toggleFullscreenCallback(bool fullscreen)
+void WrtClient::enterFullscreenCallback(Evas_Object* /*obj*/,
+ bool isFullscreenByPlatform)
{
- LogError("toggleFullscreen");
-
- if (fullscreen) {
- // enter fullscreen
- m_windowData->toggleFullscreen(true);
- m_currentViewMode = VIEWMODE_TYPE_FULLSCREEN;
- m_isWebkitFullscreen = true;
- } else {
- // exit fullscreen
- m_windowData->toggleFullscreen(false);
- m_currentViewMode = m_initialViewMode;
- m_isWebkitFullscreen = false;
+ // enter fullscreen
+ m_windowData->toggleFullscreen(true);
+ m_currentViewMode = VIEWMODE_TYPE_FULLSCREEN;
+ m_isWebkitFullscreen = true;
+ if (isFullscreenByPlatform) {
+ m_isFullscreenByPlatform = true;
}
}
+void WrtClient::exitFullscreenCallback(Evas_Object* /*obj*/)
+{
+ // exit fullscreen
+ m_windowData->toggleFullscreen(false);
+ m_currentViewMode = m_initialViewMode;
+ m_isWebkitFullscreen = false;
+ m_isFullscreenByPlatform = false;
+}
+
void WrtClient::launchStep()
{
ADD_PROFILING_POINT("launchStep", "start");
s_preparedWindowData = NULL;
}
ADD_PROFILING_POINT("CreateWindow", "stop");
+ if (!m_windowData->initScreenReaderSupport(
+ m_settingList->getAccessibility() == Accessibility_Enable))
+ {
+ LogWarning("Fail to set screen reader support set");
+ }
// rotate window to initial value
setWindowInitialOrientation();
DPL::OptionalString splashImgSrc = m_dao->getSplashImgSrc();
if (!splashImgSrc.IsNull())
{
- m_splashScreen.reset(new SplashScreenSupport(m_windowData->m_win,
- (DPL::ToUTF8String(*splashImgSrc)).c_str(),
- m_currentViewMode != VIEWMODE_TYPE_FULLSCREEN,
- m_settingList->getRotationValue() == Screen_Landscape));
+ m_splashScreen.reset(
+ new SplashScreenSupport(
+ m_windowData->getEvasObject(Layer::WINDOW),
+ (DPL::ToUTF8String(*splashImgSrc)).c_str(),
+ m_currentViewMode != VIEWMODE_TYPE_FULLSCREEN,
+ m_settingList->getRotationValue() == Screen_Landscape));
m_splashScreen->startSplashScreen();
}
ADD_PROFILING_POINT("Create splash screen", "stop");
DPL::OptionalString startUrl = W3CFileLocalization::getStartFile(m_dao);
- if (!m_widget->PrepareView(DPL::ToUTF8String(*startUrl),
- m_windowData->m_win, s_preparedEwkContext))
+ if (!m_widget->PrepareView(
+ DPL::ToUTF8String(*startUrl),
+ m_windowData->getEvasObject(Layer::WINDOW),
+ s_preparedEwkContext))
{
DPL::Event::ControllerEventHandler<NextStepEvent>::PostEvent(
NextStepEvent());
//you can't show window with splash screen before PrepareView
//ewk_view_add_with_context() in viewLogic breaks window
m_windowData->init();
- m_windowData->focusCallbackAdd("focused", focusedCallback, this);
- m_windowData->focusCallbackAdd("unfocused", unfocusedCallback, this);
+ m_windowData->smartCallbackAdd(Layer::FOCUS,
+ "focused",
+ focusedCallback,
+ this);
+ m_windowData->smartCallbackAdd(Layer::FOCUS,
+ "unfocused",
+ unfocusedCallback,
+ this);
WrtDB::WidgetLocalizedInfo localizedInfo =
W3CFileLocalization::getLocalizedInfo(m_dao);
if (!(localizedInfo.name.IsNull())) {
name = DPL::ToUTF8String(*(localizedInfo.name));
}
- elm_win_title_set(m_windowData->m_win, name.c_str());
+ elm_win_title_set(m_windowData->getEvasObject(Layer::WINDOW),
+ name.c_str());
// window show
- evas_object_show(m_windowData->m_win);
+ evas_object_show(m_windowData->getEvasObject(Layer::WINDOW));
initializeWindowModes();
NextStepEvent());
return;
}
- LogInfo("Widget launch accepted. Entering running state");
+ LogDebug("Widget launch accepted. Entering running state");
m_widgetState = WidgetState_Running;
cbs->progressStarted = DPL::MakeDelegate(this, &WrtClient::progressStartedCallback);
cbs->bufferUnset = DPL::MakeDelegate(this, &WrtClient::unsetLayout);
cbs->webkitExit = DPL::MakeDelegate(this, &WrtClient::webkitExitCallback);
cbs->webCrash = DPL::MakeDelegate(this, &WrtClient::webCrashCallback);
- cbs->toggleFullscreen = DPL::MakeDelegate(this, &WrtClient::toggleFullscreenCallback);
+ cbs->enterFullscreen = DPL::MakeDelegate(this, &WrtClient::enterFullscreenCallback);
+ cbs->exitFullscreen = DPL::MakeDelegate(this, &WrtClient::exitFullscreenCallback);
cbs->setOrientation = DPL::MakeDelegate(this, &WrtClient::setWindowOrientation);
cbs->hwkey = DPL::MakeDelegate(this, &WrtClient::hwkeyCallback);
m_widget->SetUserDelegates(cbs);
m_widget->Show();
- m_windowData->emitSignalForUserLayout(EDJE_SHOW_BACKWARD_SIGNAL, "");
ADD_PROFILING_POINT("launchStep", "stop");
}
backbutton);
}
-void WrtClient::backButtonCallback(void* data,
- Evas_Object * /*obj*/,
- void * /*event_info*/)
-{
- LogInfo("BackButtonCallback");
- Assert(data);
-
- WrtClient* This = static_cast<WrtClient*>(data);
- This->m_widget->Backward();
-}
-
Eina_Bool WrtClient::naviframeBackButtonCallback(void* data,
Elm_Object_Item* /*it*/)
{
- LogInfo("BackButtonCallback");
+ LogDebug("BackButtonCallback");
Assert(data);
WrtClient* This = static_cast<WrtClient*>(data);
int WrtClient::appcoreLowMemoryCallback(void* /*data*/)
{
- LogInfo("appcoreLowMemoryCallback");
+ LogDebug("appcoreLowMemoryCallback");
//WrtClient* This = static_cast<WrtClient*>(data);
// TODO call RunnableWidgetObject API regarding low memory
} else if (rotationValue == Screen_Landscape) {
setWindowOrientation(OrientationAngle::Window::Landscape::PRIMARY);
} else if (rotationValue == Screen_AutoRotation) {
- if (!AutoRotationSupport::setAutoRotation(m_windowData->m_win,
- autoRotationCallback,
- this))
+ if (!AutoRotationSupport::setAutoRotation(
+ m_windowData->getEvasObject(Layer::WINDOW),
+ autoRotationCallback,
+ this))
{
LogError("Fail to set auto rotation");
}
WidgetSettingScreenLock rotationValue = m_settingList->getRotationValue();
if (rotationValue == Screen_AutoRotation) {
- AutoRotationSupport::unsetAutoRotation(m_windowData->m_win, autoRotationCallback);
+ AutoRotationSupport::unsetAutoRotation(
+ m_windowData->getEvasObject(Layer::WINDOW),
+ autoRotationCallback);
}
}
return;
}
if (ClientModule::ServiceSupport::launchShareService(
- elm_win_xwindow_get(m_windowData->m_win),
+ elm_win_xwindow_get(m_windowData->getEvasObject(Layer::WINDOW)),
url))
{
- LogInfo("success");
+ LogDebug("success");
} else {
- LogInfo("fail");
+ LogDebug("fail");
}
}
return;
}
if (ClientModule::ServiceSupport::launchViewService(
- elm_win_xwindow_get(m_windowData->m_win),
+ elm_win_xwindow_get(m_windowData->getEvasObject(Layer::WINDOW)),
url))
{
- LogInfo("success");
+ LogDebug("success");
} else {
- LogInfo("fail");
+ LogDebug("fail");
}
}
if (m_settingList->getBackButtonPresence() == BackButton_Enable
|| m_currentViewMode == VIEWMODE_TYPE_WINDOWED)
{
+ // windowed UX - hosted application
if (key == KeyName::BACK) {
if (m_isWebkitFullscreen) {
ewk_view_fullscreen_exit(m_widget->GetCurrentWebview());
// UX isn't confirmed
// m_windowData->showCtxpopup();
}
+ } else {
+ // packaged application
+ if (key == KeyName::BACK) {
+ if (m_isFullscreenByPlatform) {
+ ewk_view_fullscreen_exit(m_widget->GetCurrentWebview());
+ }
+ }
}
}
-void WrtClient::setLayout(Evas_Object* newBuffer)
+void WrtClient::setLayout(Evas_Object* webview)
{
LogDebug("add new webkit buffer to window");
- Assert(newBuffer);
- m_windowData->setEvasObjectForLayout(newBuffer);
- evas_object_show(newBuffer);
- evas_object_show(m_windowData->m_win);
+ Assert(webview);
+ m_windowData->setWebview(webview);
+ evas_object_show(webview);
+ evas_object_show(m_windowData->getEvasObject(Layer::WINDOW));
}
-void WrtClient::unsetLayout(Evas_Object* currentBuffer)
+void WrtClient::unsetLayout(Evas_Object* webview)
{
LogDebug("remove current webkit buffer from window");
- Assert(currentBuffer);
- evas_object_hide(currentBuffer);
- m_windowData->unsetEvasObjectForLayout();
+ Assert(webview);
+ evas_object_hide(webview);
+ m_windowData->unsetWebview();
}
void WrtClient::shutdownStep()
// AutoRotation, focusCallback use m_widget pointer internally.
// It must be unset before m_widget is released.
unsetWindowOrientation();
- m_windowData->focusCallbackDel("focused", focusedCallback);
- m_windowData->focusCallbackDel("unfocused", unfocusedCallback);
+ m_windowData->smartCallbackDel(Layer::FOCUS,
+ "focused",
+ focusedCallback);
+ m_windowData->smartCallbackDel(Layer::FOCUS,
+ "unfocused",
+ unfocusedCallback);
m_widget.reset();
ewk_context_delete(s_preparedEwkContext);
PrepareExternalStorageSingleton::Instance().Deinitialize();
void WrtClient::autoRotationCallback(void* data, Evas_Object* obj, void* /*event*/)
{
- LogInfo("entered");
+ LogDebug("entered");
Assert(data);
Assert(obj);
WrtClient* This = static_cast<WrtClient*>(data);
-
This->autoRotationSetOrientation(obj);
}
Evas_Object* /*obj*/,
void* /*eventInfo*/)
{
- LogInfo("entered");
+ LogDebug("entered");
Assert(data);
WrtClient* This = static_cast<WrtClient*>(data);
elm_object_focus_set(This->m_widget->GetCurrentWebview(), EINA_TRUE);
Evas_Object* /*obj*/,
void* /*eventInfo*/)
{
- LogInfo("entered");
+ LogDebug("entered");
Assert(data);
WrtClient* This = static_cast<WrtClient*>(data);
elm_object_focus_set(This->m_widget->GetCurrentWebview(), EINA_FALSE);
void WrtClient::autoRotationSetOrientation(Evas_Object* obj)
{
- LogInfo("entered");
+ LogDebug("entered");
Assert(obj);
AutoRotationSupport::setOrientation(obj, m_widget->GetCurrentWebview(),
static void vconf_changed_handler(keynode_t* /*key*/, void* /*data*/)
{
- LogInfo("VCONFKEY_LANGSET vconf-key was changed!");
+ LogDebug("VCONFKEY_LANGSET vconf-key was changed!");
// When system language is changed, the candidate process will be created again.
exit(-1);
if (argc > 1 && argv[1] != NULL && !strcmp(argv[1], "-d"))
{
- LogInfo("Entered dummy process mode");
+ LogDebug("Entered dummy process mode");
sprintf(argv[0], "%s ",
DUMMY_PROCESS_PATH);
// Set 'root' home directory
setenv(HOME, ROOT_HOME_PATH, 1);
- LogInfo("Prepare ewk_context");
+ LogDebug("Prepare ewk_context");
appcore_set_i18n("wrt-client", NULL);
ewk_set_arguments(argc, argv);
setenv("WRT_LAUNCHING_PERFORMANCE", "1", 1);
if (s_preparedEwkContext == NULL)
{
- LogInfo("Creating webkit context was failed!");
+ LogDebug("Creating webkit context was failed!");
exit(-1);
}
if (client_fd == -1)
{
- LogInfo("Connecting process_pool_server was failed!");
+ LogDebug("Connecting process_pool_server was failed!");
exit(-1);
}
// register language changed callback
vconf_notify_key_changed(VCONFKEY_LANGSET, vconf_changed_handler, NULL);
- LogInfo("Prepare window_data");
+ LogDebug("Prepare window_data");
// Temporarily change HOME path to app
// This change is needed for getting elementary profile
// /opt/home/app/.elementary/config/mobile/base.cfg
const char* backupEnv = getenv(HOME);
setenv(HOME, APP_HOME_PATH, 1);
- LogInfo("elm_init()");
+ LogDebug("elm_init()");
elm_init(argc, argv);
setenv(HOME, backupEnv, 1);
- LogInfo("WindowData()");
+ LogDebug("WindowData()");
s_preparedWindowData = new WindowData(static_cast<unsigned long>(getpid()));
Ecore_Fd_Handler* fd_handler = ecore_main_fd_handler_add(client_fd,
if (fd_handler == NULL)
{
- LogInfo("fd_handler is NULL");
+ LogDebug("fd_handler is NULL");
exit(-1);
}
// deregister language changed callback
vconf_ignore_key_changed(VCONFKEY_LANGSET, vconf_changed_handler);
- std::string tizenId = WrtClient::getTizenIdFromArgument(argc, argv);
+ std::string tizenId =
+ ClientModule::CommandLineParser::getTizenId(argc, argv);
ewk_context_message_post_to_injected_bundle(
s_preparedEwkContext,
MESSAGE_NAME_INITIALIZE,
else
{
// This code is to fork a web process without exec.
- std::string tizenId = WrtClient::getTizenIdFromArgument(argc, argv);
- if (!tizenId.empty()) {
- std::size_t pos =
- tizenId.find(WrtDB::AppControlPrefix::PROCESS_PREFIX);
- if (pos != std::string::npos) {
- tizenId.erase(pos);
- }
+ std::string tizenId =
+ ClientModule::CommandLineParser::getTizenId(argc, argv);
+ if (!tizenId.empty()) {
LogDebug("Launching by fork mode");
// Language env setup
appcore_set_i18n("wrt-client", NULL);
if (s_preparedEwkContext == NULL)
{
- LogInfo("Creating webkit context was failed!");
+ LogDebug("Creating webkit context was failed!");
Wrt::Popup::PopupInvoker().showInfo("Error", "Creating webkit context was failed.", "OK");
exit(-1);
}
private:
void showHelpAndQuit();
- bool checkArgument();
- void setSdkLauncherDebugData();
- bool checkDebugMode(SDKDebugData* debugData);
+ void setDebugMode(bundle* b);
void initializeWindowModes();
// Events
virtual void OnEventReceived(const NextStepEvent& event);
// static Callback
- static void backButtonCallback(void* data,
- Evas_Object* obj,
- void* event_info);
static Eina_Bool naviframeBackButtonCallback(void* data,
Elm_Object_Item* it);
static int appcoreLowMemoryCallback(void* data);
void progressFinishCallback();
void webkitExitCallback();
void webCrashCallback();
- void toggleFullscreenCallback(bool fullscreen);
+ void enterFullscreenCallback(Evas_Object* obj, bool isFullscreenByPlatform);
+ void exitFullscreenCallback(Evas_Object* obj);
void setLayout(Evas_Object* newBuffer);
void unsetLayout(Evas_Object* currentBuffer);
bool m_launched;
bool m_initializing;
bool m_initialized;
- int m_sdkLauncherPid;
bool m_debugMode;
- unsigned short m_debuggerPort;
ReturnStatus::Type m_returnStatus;
WRT::RunnableWidgetObjectPtr m_widget;
WrtDB::WidgetDAOReadOnlyPtr m_dao;
std::string m_initialViewMode;
std::string m_currentViewMode;
bool m_isWebkitFullscreen;
+ bool m_isFullscreenByPlatform;
};
#endif // WRT_CLIENT_H
libprivilege-control
x11
sqlite3
+ libsystemd-daemon
REQUIRED
)
_static_ int __send_to_sigkill(int pid);
_static_ int __term_app(int pid);
_static_ int __resume_app(int pid);
-_static_ void __real_send(int clifd, int ret);
+_static_ int __real_send(int clifd, int ret);
_static_ void __send_result_to_caller(int clifd, int ret);
_static_ void __launchpad_exec_dummy(int main_fd, int pool_fd, int client_fd);
_static_ void __launchpad_main_loop(int main_fd, int pool_fd);
return res;
}
-_static_ void __real_send(int clifd, int ret)
+_static_ int __real_send(int clifd, int ret)
{
if (send(clifd, &ret, sizeof(int), MSG_NOSIGNAL) < 0) {
if (errno == EPIPE) {
_E("send failed due to EPIPE.\n");
+ close(clifd);
+ return -1;
}
_E("send fail to client");
}
close(clifd);
+ return 0;
}
_static_ void __send_result_to_caller(int clifd, int ret)
int wait_count;
int cmdline_changed = 0;
int cmdline_exist = 0;
+ int r;
if (clifd == -1) {
return;
_E("process launched, but cmdline not changed");
}
- __real_send(clifd, ret);
+ if (__real_send(clifd, ret) < 0) {
+ r = kill(ret, SIGKILL);
+ if (r == -1) {
+ _E("send SIGKILL: %s", strerror(errno));
+ }
+ }
+
return;
}
#include <errno.h>
#include <fcntl.h>
#include <time.h>
-
+#include <systemd/sd-daemon.h>
#include "app_sock.h"
#include "simple_util.h"
struct sockaddr_un saddr;
struct sockaddr_un p_saddr;
int fd;
+ int listen_fds=0;
+ int i;
mode_t orig_mask;
+ memset(&saddr, 0, sizeof(saddr));
+ saddr.sun_family = AF_UNIX;
+ snprintf(saddr.sun_path, UNIX_PATH_MAX, "%s/%d", AUL_SOCK_PREFIX, pid);
+
+ listen_fds = sd_listen_fds(0);
+ if (listen_fds < 0) {
+ _E("invalid systemd environment");
+ return -1;
+ } else if (listen_fds > 0) {
+ for (i = 0; i < listen_fds; i++) {
+ fd = SD_LISTEN_FDS_START + i;
+ if (sd_is_socket_unix(fd, SOCK_STREAM, 1, saddr.sun_path, 0))
+ return fd;
+ }
+ _E("socket not found: %s", saddr.sun_path);
+ return -1;
+ }
+
/* Create basedir for our sockets */
orig_mask = umask(0);
(void) mkdir(AUL_SOCK_PREFIX, S_IRWXU | S_IRWXG | S_IRWXO | S_ISVTX);
}
}
- memset(&saddr, 0, sizeof(saddr));
- saddr.sun_family = AF_UNIX;
- snprintf(saddr.sun_path, UNIX_PATH_MAX, "%s/%d", AUL_SOCK_PREFIX, pid);
unlink(saddr.sun_path);
/* labeling to socket for SMACK */
#include <linux/un.h>
#include <errno.h>
#include <stdio.h>
+#include <systemd/sd-daemon.h>
#include "process_pool.h"
#include "simple_util.h"
{
struct sockaddr_un addr;
int fd = -1;
+ int listen_fds=0;
+ int i;
memset(&addr, 0x00, sizeof(struct sockaddr_un));
+ addr.sun_family = AF_UNIX;
+ snprintf(addr.sun_path, UNIX_PATH_MAX, "%s/%s", TMP_PATH, PROCESS_POOL_SERVER);
+
+ listen_fds = sd_listen_fds(0);
+ if (listen_fds < 0)
+ {
+ _E("invalid systemd environment");
+ return -1;
+ }
+ else if (listen_fds > 0)
+ {
+ for (i = 0; i < listen_fds; i++)
+ {
+ fd = SD_LISTEN_FDS_START + i;
+ if (sd_is_socket_unix(fd, SOCK_STREAM, 1, addr.sun_path, 0))
+ return fd;
+ }
+ _E("socket not found: %s", addr.sun_path);
+ return -1;
+ }
fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
goto err_create_process_pool_server;
}
- addr.sun_family = AF_UNIX;
- snprintf(addr.sun_path, UNIX_PATH_MAX, "%s/%s", TMP_PATH, PROCESS_POOL_SERVER);
unlink(addr.sun_path);
_D("bind to %s", addr.sun_path);
+++ /dev/null
-#!/bin/sh
-# Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
-#
-# 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.
-#
-
-/usr/bin/wrt_launchpad_daemon " " &
[Unit]
Description=Start the wrt_launchpad_daemon
-After=ac.service
[Service]
EnvironmentFile=/etc/sysconfig/tizen-mobile-ui
--- /dev/null
+[Socket]
+ListenStream=/tmp/alaunch/-3
+DirectoryMode=0777
+SocketMode=0777
+SmackLabelIPIn=*
+SmackLabelIPOut=@
+Service=wrt_launchpad_daemon@app.service
+
+[Install]
+WantedBy=sockets.target
--- /dev/null
+[Socket]
+ListenStream=/tmp/wrt_process_pool_server
+SocketMode=0777
+Service=wrt_launchpad_daemon@app.service
+
+[Install]
+WantedBy=sockets.target
int main (int argc, char *argv[])
{
- LogInfo("Starting tests");
+ LogDebug("Starting tests");
WrtDB::WrtDatabase::attachToThreadRW();
int status =
#ifndef MOCKCONTEXTMANAGER_H
#define MOCKCONTEXTMANAGER_H
-#include <abstract_context_manager.h>
+#include <i_context_manager.h>
-class MockContextManager : public WRT::AbstractContextManager
+class MockContextManager : public ViewModule::IContextManager
{
public:
MockContextManager(const std::string& tizenAppId,
- Ewk_Context* ewkContext,
- ViewModule::IViewModulePtr viewModule);
+ Ewk_Context* ewkContext,
+ ViewModule::IViewModulePtr viewModule);
virtual ~MockContextManager();
Ewk_Context* getEwkContext() const;
void handleLowMemory();
WRT::RunnableWidgetObject * m_widget_impl = dynamic_cast<WRT::RunnableWidgetObject*>(m_widget.get());
Assert(m_widget_impl);
m_widget_impl->setViewModule(ViewModule::IViewModulePtr(new MockViewModule()));
- m_widget_impl->setContextManagerFactoryMethod(WRT::makeContextManagerFactoryMethod<MockContextManager>());
+ m_widget_impl->setContextManagerFactoryMethod(ViewModule::makeContextManagerFactoryMethod());
if(!m_widget)
{
ThrowMsg(CoreModuleFailure, "getRunnableWidgetObject() fails");
const std::string& tizenAppId,
Ewk_Context* ewkContext,
ViewModule::IViewModulePtr viewModule) :
- AbstractContextManager(tizenAppId, ewkContext, viewModule)
+ ViewModule::IContextManager(tizenAppId, ewkContext, viewModule)
{
}
void MockContextManager::handleLowMemory()
{
}
+
+namespace ViewModule {
+
+ContextManagerPtr contextManagerFactoryMethod(
+ const std::string& id,
+ Ewk_Context* c,
+ IViewModulePtr view)
+{
+ ContextManagerPtr ptr (new MockContextManager(id, c, view));
+ return ptr;
+}
+
+ContextManagerFactoryMethod makeContextManagerFactoryMethod()
+{
+ return contextManagerFactoryMethod;
+}
+
+} // namespace ViewModule
\ No newline at end of file
#export WRT_WILL_SEND_REQUEST_LOG_ENABLE=ON
#export WRT_LOAD_PLUGINS_LOG_ENABLE=ON
#export WRT_FRAME_RENDERED_LOG_ENABLE=ON
+#export WRT_WIDGET_DATA_TYPES_LOG_ENABLE=ON
+