Prevent recursive call of Document::execCommand() to protect from attack code

This patch prevents recursive call of Document::execCommand() to protect from attack code, e.g. executing editing operation in <iframe onload="... editing command">, <iframe src="javascript:...">.

Before this patch, editing operations moving iframe executes JavaScript script, specified in load event handler or src with javascript protocol. Although, implementation of editing operations don't handle DOM tree modification during executing editing operation.

Note: This change reduces security risk but introduces browser incompatibility to Blink. However, compatibility risk is low because use case of recursive execution of Document::execCommand() is very tricky and the result is different in each browser. We've seen usage of this in attack code only so far.

BUG=314609
TEST=LayoutTests/editing/execCommand/apply-style-iframe-crash.html

Review URL: https://codereview.chromium.org/71163005

git-svn-id: svn://svn.chromium.org/blink/trunk@162080 bbb929c8-8fbe-4397-9dbb-9b2b20218538