summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2018-06-28 11:06:13 -0400
committerSangHyeon Jade Lee <sh10233.lee@samsung.com>2018-07-12 11:34:47 +0900
commitc2ffe605d9e634910b954d54cafeca6ba8f87960 (patch)
tree28be4d2ee5149b6ee9876a9350270b16c8ffa872
parentd5444e662ccc705a5c3d494c325748f36dcdb9ad (diff)
downloadefl-c2ffe605d9e634910b954d54cafeca6ba8f87960.tar.gz
edje_cc: add 'skip_namespace_validation' keyword
this pairs with the newly-added -N option to denote groups in edc files which should not be checked for correct namespacing the option is useful for cases such as music_control.edc, where a group has been shipping for years with API signals like "btn,clicked" which cannot be changed since they are used in an external application and compatibility must be maintained the documentation for this option explicitly states that it must only be used inside an #ifdef SKIP_NAMESPACE_VALIDATION block, allowing this keyword to be easily removed at a later point ref T7072 @feature Differential Revision: https://phab.enlightenment.org/D6388
-rw-r--r--src/bin/edje/edje_cc.h1
-rw-r--r--src/bin/edje/edje_cc_handlers.c27
-rw-r--r--src/bin/edje/edje_cc_out.c32
-rw-r--r--src/bin/edje/edje_cc_parse.c8
4 files changed, 52 insertions, 16 deletions
diff --git a/src/bin/edje/edje_cc.h b/src/bin/edje/edje_cc.h
index aec77a4587..afb7a99c03 100644
--- a/src/bin/edje/edje_cc.h
+++ b/src/bin/edje/edje_cc.h
@@ -167,6 +167,7 @@ struct _Edje_Part_Collection_Parser
Eina_Bool default_mouse_events;
Eina_Bool inherit_only;
Eina_Bool inherit_script : 1;
+ Eina_Bool skip_namespace_validation : 1;
};
typedef enum
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 6d987edb8f..17b3ce3768 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -257,6 +257,7 @@ static void st_collections_base_scale(void);
static void ob_collections_group(void);
static void st_collections_group_name(void);
+static void st_collections_group_skip_namespace_validation(void);
static void st_collections_group_inherit_only(void);
static void st_collections_group_inherit(void);
static void st_collections_group_program_source(void);
@@ -749,6 +750,7 @@ New_Statement_Handler statement_handlers[] =
}, /* dup */
{"collections.group.vibrations.sample.source", st_collections_group_vibration_sample_source}, /* dup */
{"collections.group.name", st_collections_group_name},
+ {"collections.group.skip_namespace_validation", st_collections_group_skip_namespace_validation},
{"collections.group.program_source", st_collections_group_program_source},
{"collections.group.inherit", st_collections_group_inherit},
{"collections.group.inherit_only", st_collections_group_inherit_only},
@@ -4521,6 +4523,30 @@ st_collections_group_name(void)
_group_name(parse_str(0));
}
+/**
+ @page edcref
+ @property
+ skip_namespace_validation
+ @parameters
+ [1 or 0]
+ @effect
+ This disables namespace validation for the current group if validation has
+ been enabled with edje_cc's -N option.
+ This property can be inherited.
+ Defaults: 0
+
+ @warning Your edc file should always wrap this keyword with #ifdef HAVE_SKIP_NAMESPACE_VALIDATION
+ @since 1.21
+ @endproperty
+ */
+static void
+st_collections_group_skip_namespace_validation(void)
+{
+ Edje_Part_Collection_Parser *pcp = eina_list_last_data_get(edje_collections);
+ check_arg_count(1);
+ pcp->skip_namespace_validation = parse_bool(0);
+}
+
typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data;
struct _Edje_List_Foreach_Data
{
@@ -5170,6 +5196,7 @@ st_collections_group_inherit(void)
pcp = (Edje_Part_Collection_Parser *)pc;
pcp2 = (Edje_Part_Collection_Parser *)pc2;
pcp->default_mouse_events = pcp2->default_mouse_events;
+ pcp->skip_namespace_validation = pcp2->skip_namespace_validation;
if (pcp2->inherit_script)
pcp->inherit_script = pcp2->inherit_script;
diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c
index 4d21668368..a28cc48505 100644
--- a/src/bin/edje/edje_cc_out.c
+++ b/src/bin/edje/edje_cc_out.c
@@ -631,6 +631,7 @@ _part_namespace_verify(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef EIN
static void
check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef)
{
+ Edje_Part_Collection_Parser *pcp = (Edje_Part_Collection_Parser*)pc;
unsigned int i;
Eina_List *group_path = NULL;
/* FIXME: check image set and sort them. */
@@ -662,19 +663,22 @@ check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef)
check_text_part_desc(pc, ep, (Edje_Part_Description_Text *)ep->other.desc[i], ef);
}
- switch (ep->type)
+ if (!pcp->skip_namespace_validation)
{
- case EDJE_PART_TYPE_BOX:
- case EDJE_PART_TYPE_TABLE:
- case EDJE_PART_TYPE_SWALLOW:
- _part_namespace_verify(pc, ep, ef, 1);
- break;
- case EDJE_PART_TYPE_TEXT:
- case EDJE_PART_TYPE_TEXTBLOCK:
- case EDJE_PART_TYPE_SPACER:
- _part_namespace_verify(pc, ep, ef, 0);
- break;
- default: break;
+ switch (ep->type)
+ {
+ case EDJE_PART_TYPE_BOX:
+ case EDJE_PART_TYPE_TABLE:
+ case EDJE_PART_TYPE_SWALLOW:
+ _part_namespace_verify(pc, ep, ef, 1);
+ break;
+ case EDJE_PART_TYPE_TEXT:
+ case EDJE_PART_TYPE_TEXTBLOCK:
+ case EDJE_PART_TYPE_SPACER:
+ _part_namespace_verify(pc, ep, ef, 0);
+ break;
+ default: break;
+ }
}
/* FIXME: When smart masks are supported, remove this check */
@@ -716,6 +720,7 @@ _program_signal_namespace_verify(Edje_Part_Collection *pc, Eet_File *ef EINA_UNU
static void
check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
{
+ Edje_Part_Collection_Parser *pcp = (Edje_Part_Collection_Parser*)pc;
switch (ep->action)
{
case EDJE_ACTION_TYPE_STATE_SET:
@@ -744,7 +749,8 @@ check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef)
if ((!ep->targets) && (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT))
{
- _program_signal_namespace_verify(pc, ef, ep->state, ep->state2);
+ if (!pcp->skip_namespace_validation)
+ _program_signal_namespace_verify(pc, ef, ep->state, ep->state2);
}
EINA_LIST_FOREACH(ep->targets, l, et)
diff --git a/src/bin/edje/edje_cc_parse.c b/src/bin/edje/edje_cc_parse.c
index 068bd74eee..7a3335c559 100644
--- a/src/bin/edje/edje_cc_parse.c
+++ b/src/bin/edje/edje_cc_parse.c
@@ -22,6 +22,8 @@
# define EPP_EXT
#endif
+#define SKIP_NAMESPACE_VALIDATION_SUPPORTED " -DSKIP_NAMESPACE_VALIDATION=1 "
+
#define EDJE_1_18_SUPPORTED " -DEFL_VERSION_1_18=1 "
#define EDJE_1_19_SUPPORTED " -DEFL_VERSION_1_19=1 "
#define EDJE_1_20_SUPPORTED " -DEFL_VERSION_1_20=1 "
@@ -1082,7 +1084,7 @@ compile(void)
inc = ecore_file_dir_get(file_in);
if (depfile)
- snprintf(buf, sizeof(buf), "\"%s\" -MMD \"%s\" -MT \"%s\" \"%s\""
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -MMD \"%s\" -MT \"%s\" \"%s\""
" -I\"%s\" %s -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,
@@ -1090,7 +1092,7 @@ compile(void)
inc ? inc : "./", def, clean_file,
EINA_VERSION_MAJOR, EINA_VERSION_MINOR);
else if (annotate)
- snprintf(buf, sizeof(buf), "\"%s\" -annotate -a \"%s\" \"%s\""
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -annotate -a \"%s\" \"%s\""
" -I\"%s\" %s -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,
@@ -1098,7 +1100,7 @@ compile(void)
inc ? inc : "./", def, clean_file,
EINA_VERSION_MAJOR, EINA_VERSION_MINOR);
else
- snprintf(buf, sizeof(buf), "\"%s\" -a \"%s\" \"%s\" -I\"%s\" %s"
+ snprintf(buf, sizeof(buf), "\"%s\" "SKIP_NAMESPACE_VALIDATION_SUPPORTED" -a \"%s\" \"%s\" -I\"%s\" %s"
" -o \"%s\""
" -DEFL_VERSION_MAJOR=%d -DEFL_VERSION_MINOR=%d"
EDJE_CC_EFL_VERSION_SUPPORTED,