static int _e_keyrouter_find_duplicated_grabbed_key(struct wl_resource *surface, struct wl_client *wc, uint32_t key, uint32_t mode);
+static Eina_Bool
+_e_keyrouter_keygrab_no_privcheck(uint32_t keycode, uint32_t mode)
+{
+ Eina_Bool no_privcheck;
+
+ /* Top position grab is always allowed. This mode do not need privilege.*/
+ if (mode == TIZEN_KEYROUTER_MODE_TOPMOST)
+ return EINA_TRUE;
+
+ no_privcheck = e_keyrouter_hardkeys_no_privcheck_get(krt->HardKeys, keycode);
+ if (no_privcheck == EINA_TRUE &&
+ mode == TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE)
+ return EINA_TRUE;
+
+ return EINA_FALSE;
+}
+
/* Function for checking whether the key has been grabbed already by the same wl_surface or not */
static int
_e_keyrouter_find_duplicated_grabbed_key(struct wl_resource *surface, struct wl_client *wc, uint32_t key, uint32_t mode)
int res;
#ifdef HAVE_CYNARA
- if (EINA_FALSE == e_keyrouter_wl_util_do_privilege_check(client, mode, key))
+ if (!_e_keyrouter_keygrab_no_privcheck(key, mode))
{
- INF("No permission for %d grab mode ! (key=%d)", mode, key);
- return TIZEN_KEYROUTER_ERROR_NO_PERMISSION;
+ if (!e_keyrouter_wl_keygrab_privilege_check(client))
+ {
+ INF("No permission for %d grab mode ! (key=%d)", mode, key);
+ return TIZEN_KEYROUTER_ERROR_NO_PERMISSION;
+ }
}
#endif
g_rec_mutex_unlock(&krt->grab_key_mutex);
#ifdef HAVE_CYNARA
- if (!e_keyrouter_wl_util_do_privilege_check(client, TIZEN_KEYROUTER_MODE_NONE, key))
- goto finish;
+ if (!_e_keyrouter_keygrab_no_privcheck(key, TIZEN_KEYROUTER_MODE_NONE))
+ {
+ if (!e_keyrouter_wl_keygrab_privilege_check(client))
+ goto finish;
+ }
#endif
g_rec_mutex_lock(&krt->grab_key_mutex);
}
#ifdef HAVE_CYNARA
-EINTERN EINTERN Eina_Bool
-e_keyrouter_wl_util_do_privilege_check(struct wl_client *client, uint32_t mode, uint32_t keycode)
+EINTERN Eina_Bool
+e_keyrouter_wl_keygrab_privilege_check(struct wl_client *client)
{
- Eina_Bool res = EINA_FALSE, no_privcheck;
+ Eina_Bool res = EINA_FALSE;
Eina_List *l;
struct wl_client *wc_data;
pid_t pid = 0;
uid_t uid = 0;
gid_t gid = 0;
- /* Top position grab is always allowed. This mode do not need privilege.*/
- if (mode == TIZEN_KEYROUTER_MODE_TOPMOST)
- return EINA_TRUE;
-
- no_privcheck = e_keyrouter_hardkeys_no_privcheck_get(krt->HardKeys, keycode);
- if (no_privcheck == EINA_TRUE &&
- mode == TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE)
- return EINA_TRUE;
-
if (!client) return EINA_FALSE;
EINA_LIST_FOREACH(g_tizen_keyrouter->grab_client_list, l, wc_data)
EINTERN void e_keyrouter_wl_keycancel_send(struct wl_client *client, unsigned int key);
EINTERN void e_keyrouter_wl_event_surface_send(struct wl_resource *surface, int key, int mode);
-EINTERN Eina_Bool e_keyrouter_wl_util_do_privilege_check(struct wl_client *client, uint32_t mode, uint32_t keycode);
+EINTERN Eina_Bool e_keyrouter_wl_keygrab_privilege_check(struct wl_client *client);
#endif