RESOLVED FIXED 102054
[EFL][WK2] Add APIs to get/set whether scripts can open new windows.
https://bugs.webkit.org/show_bug.cgi?id=102054
Summary [EFL][WK2] Add APIs to get/set whether scripts can open new windows.
Yuni Jeong
Reported 2012-11-13 00:27:30 PST
Added setting APIs make it possible to allow or prevent scripts from opening the new windows automatically.
Attachments
Patch (4.52 KB, patch)
2012-11-13 02:57 PST, Yuni Jeong
no flags
Patch (4.43 KB, patch)
2012-11-14 20:17 PST, Yuni Jeong
no flags
Yuni Jeong
Comment 1 2012-11-13 02:57:39 PST
Raphael Kubo da Costa (:rakuco)
Comment 2 2012-11-14 07:07:31 PST
Comment on attachment 173856 [details] Patch Looks good to me, with an English nitpick: "open the new windows" -> "open new windows".
Yuni Jeong
Comment 3 2012-11-14 20:17:36 PST
Yuni Jeong
Comment 4 2012-11-14 20:21:21 PST
I changed: "open the new windows" -> "open new windows".
Gyuyoung Kim
Comment 5 2012-11-14 20:36:42 PST
Comment on attachment 174331 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review > Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 > + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); I think we don't need to set if enable value is same as current value. For example, you may add this condition. bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); if (currentValue == enable) return;
Yuni Jeong
Comment 6 2012-11-15 03:00:08 PST
Comment on attachment 174331 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review >> Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 >> + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); > > I think we don't need to set if enable value is same as current value. > > For example, you may add this condition. > > bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); > if (currentValue == enable) > return; I agree to your idea. But, other APIs to set enable value do not check above condition. Above condition must be added in this function?
Gyuyoung Kim
Comment 7 2012-11-15 03:03:59 PST
(In reply to comment #6) > I agree to your idea. > But, other APIs to set enable value do not check above condition. > Above condition must be added in this function? I think so. We don't need to set even though current setting is set as parameter. I think other settings functions need to have this checking condition.
Chris Dumez
Comment 8 2012-11-15 03:11:09 PST
Comment on attachment 174331 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review >>> Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 >>> + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); >> >> I think we don't need to set if enable value is same as current value. >> >> For example, you may add this condition. >> >> bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); >> if (currentValue == enable) >> return; > > I agree to your idea. > But, other APIs to set enable value do not check above condition. > Above condition must be added in this function? I think such if check would make sense if the operation was expensive. However, these are settings and the behavior is usually to set a boolean flag in memory. In practice, adding the if check may make it slower for no good reason. See for e.g.: void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWindowsAutomatically) { m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; } Would it really make sense to do if (m_javaScriptCanOpenWindowsAutomatically != javaScriptCanOpenWindowsAutomatically) m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; ?
Gyuyoung Kim
Comment 9 2012-11-15 03:47:20 PST
(In reply to comment #8) > (From update of attachment 174331 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review > > >>> Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 > >>> + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); > >> > >> I think we don't need to set if enable value is same as current value. > >> > >> For example, you may add this condition. > >> > >> bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); > >> if (currentValue == enable) > >> return; > > > > I agree to your idea. > > But, other APIs to set enable value do not check above condition. > > Above condition must be added in this function? > > I think such if check would make sense if the operation was expensive. However, these are settings and the behavior is usually to set a boolean flag in memory. In practice, adding the if check may make it slower for no good reason. > > See for e.g.: > > void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWindowsAutomatically) > { > m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; > } > > Would it really make sense to do if (m_javaScriptCanOpenWindowsAutomatically != javaScriptCanOpenWindowsAutomatically) m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; ? When we add this check, I also think there is no big performance gain because this is not expensive operation. In addition, to add this condition is not big operation. However, I think it doesn't generally make sense we set same value again. If the settings operation become a expensive stuff, I think this checking will prevent to waste our resource in future. Honestly, now there is no gain by this checking. But, if we add additional operation in ewk_settings_xxx function as below, Eina_Bool ewk_settings_encoding_detector_enabled_set(Ewk_Settings* settings, Eina_Bool enable) { EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); settings->preferences()->setUsesEncodingDetector(enable); // To do something. return true; } In this case, we have to add this checking. But, I think it would be not bad if we add this now in order to prevent to do unnecessary operations in future.
Chris Dumez
Comment 10 2012-11-15 04:03:09 PST
Comment on attachment 174331 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review >>>>> Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 >>>>> + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); >>>> >>>> I think we don't need to set if enable value is same as current value. >>>> >>>> For example, you may add this condition. >>>> >>>> bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); >>>> if (currentValue == enable) >>>> return; >>> >>> I agree to your idea. >>> But, other APIs to set enable value do not check above condition. >>> Above condition must be added in this function? >> >> I think such if check would make sense if the operation was expensive. However, these are settings and the behavior is usually to set a boolean flag in memory. In practice, adding the if check may make it slower for no good reason. >> >> See for e.g.: >> >> void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWindowsAutomatically) >> { >> m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; >> } >> >> Would it really make sense to do if (m_javaScriptCanOpenWindowsAutomatically != javaScriptCanOpenWindowsAutomatically) m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; ? > > When we add this check, I also think there is no big performance gain because this is not expensive operation. In addition, to add this condition is not big operation. However, I think it doesn't generally make sense we set same value again. If the settings operation become a expensive stuff, I think this checking will prevent to waste our resource in future. > > Honestly, now there is no gain by this checking. But, if we add additional operation in ewk_settings_xxx function as below, > > Eina_Bool ewk_settings_encoding_detector_enabled_set(Ewk_Settings* settings, Eina_Bool enable) > { > EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); > > settings->preferences()->setUsesEncodingDetector(enable); > > // To do something. > > return true; > } > > In this case, we have to add this checking. But, I think it would be not bad if we add this now in order to prevent to do unnecessary operations in future. Yes, I agree with you that if it does something more that setting a flag, adding a change check is worth it. However, it is not the case at the moment, and I would like to avoid refactoring which adds more code (and potentially decreases performance) unless we really need to. If more logic is added later which may take time, then we can optimize then, by adding the change check as you suggest. I would hold off on it until then though.
Mikhail Pozdnyakov
Comment 11 2012-11-15 04:09:37 PST
(In reply to comment #9) > (In reply to comment #8) > > (From update of attachment 174331 [details] [details]) > > View in context: https://bugs.webkit.org/attachment.cgi?id=174331&action=review > > > > >>> Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp:323 > > >>> + EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); > > >> > > >> I think we don't need to set if enable value is same as current value. > > >> > > >> For example, you may add this condition. > > >> > > >> bool currentValue = settings->preferences()->javaScriptCanOpenWindowsAutomatically(); > > >> if (currentValue == enable) > > >> return; > > > > > > I agree to your idea. > > > But, other APIs to set enable value do not check above condition. > > > Above condition must be added in this function? > > > > I think such if check would make sense if the operation was expensive. However, these are settings and the behavior is usually to set a boolean flag in memory. In practice, adding the if check may make it slower for no good reason. > > > > See for e.g.: > > > > void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWindowsAutomatically) > > { > > m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; > > } > > > > Would it really make sense to do if (m_javaScriptCanOpenWindowsAutomatically != javaScriptCanOpenWindowsAutomatically) m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; ? > > When we add this check, I also think there is no big performance gain because this is not expensive operation. In addition, to add this condition is not big operation. However, I think it doesn't generally make sense we set same value again. If the settings operation become a expensive stuff, I think this checking will prevent to waste our resource in future. > > Honestly, now there is no gain by this checking. But, if we add additional operation in ewk_settings_xxx function as below, > > Eina_Bool ewk_settings_encoding_detector_enabled_set(Ewk_Settings* settings, Eina_Bool enable) > { > EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false); > > settings->preferences()->setUsesEncodingDetector(enable); > > // To do something. > > return true; > } > > In this case, we have to add this checking. But, I think it would be not bad if we add this now in order to prevent to do unnecessary operations in future. I would not put it as a rule to be done dogmatically every time, and introduce the check only in cases when we really have an expensive operation.
Gyuyoung Kim
Comment 12 2012-11-15 04:10:58 PST
(In reply to comment #10) > Yes, I agree with you that if it does something more that setting a flag, adding a change check is worth it. > However, it is not the case at the moment, and I would like to avoid refactoring which adds more code (and potentially decreases performance) unless we really need to. If more logic is added later which may take time, then we can optimize then, by adding the change check as you suggest. I would hold off on it until then though. This is timing problem. Ok, let's do that.
WebKit Review Bot
Comment 13 2012-11-15 04:14:00 PST
Comment on attachment 174331 [details] Patch Clearing flags on attachment: 174331 Committed r134760: <http://trac.webkit.org/changeset/134760>
WebKit Review Bot
Comment 14 2012-11-15 04:14:05 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.