Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Implement a Google-specific variant of the First Strong algorithm in …

…the closure editor.

The Frist Strong algorithm is a heuristic used to automatically set paragraph direction
depending on the paragraph's content.

R=marcosalmeida
DELTA=1067  (1066 added, 0 deleted, 1 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=5787


git-svn-id: http://closure-library.googlecode.com/svn/trunk@2284 0b95b8e8-c90f-11de-9d4f-f947ee5921c8
  • Loading branch information...
commit 2bcca2ac2b73b94a7fb24a66ef838eacfa2aa8ac 1 parent 47f8bb9
nkerem@google.com authored
View
2  alltests.js
@@ -13,4 +13,4 @@
// limitations under the License.
var _allTests = [
-"closure/goog/array/array_test.html","closure/goog/asserts/asserts_test.html","closure/goog/async/animationdelay_test.html","closure/goog/async/conditionaldelay_test.html","closure/goog/async/delay_test.html","closure/goog/async/throttle_test.html","closure/goog/base_test.html","closure/goog/color/alpha_test.html","closure/goog/color/color_test.html","closure/goog/crypt/aes_test.html","closure/goog/crypt/arc4_test.html","closure/goog/crypt/base64_test.html","closure/goog/crypt/basen_test.html","closure/goog/crypt/blobhasher_test.html","closure/goog/crypt/cbc_test.html","closure/goog/crypt/crypt_test.html","closure/goog/crypt/hash32_test.html","closure/goog/crypt/hmac_test.html","closure/goog/crypt/md5_test.html","closure/goog/crypt/pbkdf2_test.html","closure/goog/crypt/sha1_test.html","closure/goog/crypt/sha224_test.html","closure/goog/crypt/sha256_test.html","closure/goog/cssom/cssom_test.html","closure/goog/cssom/iframe/style_test.html","closure/goog/datasource/datasource_test.html","closure/goog/datasource/expr_test.html","closure/goog/datasource/fastdatanode_test.html","closure/goog/datasource/jsxmlhttpdatasource_test.html","closure/goog/date/daterange_test.html","closure/goog/date/date_test.html","closure/goog/date/relative_test.html","closure/goog/date/utcdatetime_test.html","closure/goog/db/db_test.html","closure/goog/debug/console_test.html","closure/goog/debug/debug_test.html","closure/goog/debug/debugwindow_test.html","closure/goog/debug/devcss/devcss_test.html","closure/goog/debug/enhanceerror_test.html","closure/goog/debug/entrypointregistry_test.html","closure/goog/debug/errorhandler_async_test.html","closure/goog/debug/errorhandler_test.html","closure/goog/debug/errorreporter_test.html","closure/goog/debug/error_test.html","closure/goog/debug/fpsdisplay_test.html","closure/goog/debug/logbuffer_test.html","closure/goog/debug/logger_test.html","closure/goog/debug/logrecordserializer_test.html","closure/goog/debug/reflect_test.html","closure/goog/debug/tracer_test.html","closure/goog/disposable/disposable_test.html","closure/goog/dom/a11y_test.html","closure/goog/dom/abstractrange_test.html","closure/goog/dom/annotate_test.html","closure/goog/dom/browserrange/browserrange_test.html","closure/goog/dom/bufferedviewportsizemonitor_test.html","closure/goog/dom/classes_quirks_test.html","closure/goog/dom/classes_test.html","closure/goog/dom/classlist_test.html","closure/goog/dom/controlrange_test.html","closure/goog/dom/dataset_test.html","closure/goog/dom/dom_quirks_test.html","closure/goog/dom/dom_test.html","closure/goog/dom/fontsizemonitor_test.html","closure/goog/dom/forms_test.html","closure/goog/dom/iframe_test.html","closure/goog/dom/iter_test.html","closure/goog/dom/multirange_test.html","closure/goog/dom/nodeiterator_test.html","closure/goog/dom/nodeoffset_test.html","closure/goog/dom/pattern/matcher_test.html","closure/goog/dom/pattern/pattern_test.html","closure/goog/dom/range_test.html","closure/goog/dom/savedcaretrange_test.html","closure/goog/dom/savedrange_test.html","closure/goog/dom/selection_test.html","closure/goog/dom/tagiterator_test.html","closure/goog/dom/tagname_test.html","closure/goog/dom/textrangeiterator_test.html","closure/goog/dom/textrange_test.html","closure/goog/dom/viewportsizemonitor_test.html","closure/goog/dom/xml_test.html","closure/goog/editor/clicktoeditwrapper_test.html","closure/goog/editor/contenteditablefield_test.html","closure/goog/editor/field_test.html","closure/goog/editor/focus_test.html","closure/goog/editor/icontent_test.html","closure/goog/editor/link_test.html","closure/goog/editor/node_test.html","closure/goog/editor/plugins/abstractbubbleplugin_test.html","closure/goog/editor/plugins/abstractdialogplugin_test.html","closure/goog/editor/plugins/abstracttabhandler_test.html","closure/goog/editor/plugins/basictextformatter_test.html","closure/goog/editor/plugins/blockquote_test.html","closure/goog/editor/plugins/emoticons_test.html","closure/goog/editor/plugins/enterhandler_test.html","closure/goog/editor/plugins/equationeditorplugin_test.html","closure/goog/editor/plugins/headerformatter_test.html","closure/goog/editor/plugins/linkbubble_test.html","closure/goog/editor/plugins/linkdialogplugin_test.html","closure/goog/editor/plugins/linkshortcutplugin_test.html","closure/goog/editor/plugins/listtabhandler_test.html","closure/goog/editor/plugins/loremipsum_test.html","closure/goog/editor/plugins/removeformatting_test.html","closure/goog/editor/plugins/spacestabhandler_test.html","closure/goog/editor/plugins/tableeditor_test.html","closure/goog/editor/plugins/tagonenterhandler_test.html","closure/goog/editor/plugins/undoredomanager_test.html","closure/goog/editor/plugins/undoredostate_test.html","closure/goog/editor/plugins/undoredo_test.html","closure/goog/editor/plugin_test.html","closure/goog/editor/range_test.html","closure/goog/editor/seamlessfield_quirks_test.html","closure/goog/editor/seamlessfield_test.html","closure/goog/editor/style_test.html","closure/goog/editor/table_test.html","closure/goog/events/actioneventwrapper_test.html","closure/goog/events/actionhandler_test.html","closure/goog/events/browserevent_test.html","closure/goog/events/eventhandler_test.html","closure/goog/events/events_test.html","closure/goog/events/eventtarget_test.html","closure/goog/events/eventtarget_via_googevents_test.html","closure/goog/events/event_test.html","closure/goog/events/filedrophandler_test.html","closure/goog/events/imehandler_test.html","closure/goog/events/keycodes_test.html","closure/goog/events/keyhandler_test.html","closure/goog/events/mousewheelhandler_test.html","closure/goog/events/onlinelistener_test.html","closure/goog/events/pastehandler_test.html","closure/goog/format/emailaddress_test.html","closure/goog/format/format_test.html","closure/goog/format/htmlprettyprinter_test.html","closure/goog/format/jsonprettyprinter_test.html","closure/goog/fs/fs_test.html","closure/goog/functions/functions_test.html","closure/goog/fx/abstractdragdrop_test.html","closure/goog/fx/anim/anim_test.html","closure/goog/fx/animationqueue_test.html","closure/goog/fx/animation_test.html","closure/goog/fx/css3/transition_test.html","closure/goog/fx/cssspriteanimation_test.html","closure/goog/fx/dragdropgroup_test.html","closure/goog/fx/dragger_test.html","closure/goog/fx/draglistgroup_test.html","closure/goog/fx/dragscrollsupport_test.html","closure/goog/fx/fx_test.html","closure/goog/gears/basestore_test.html","closure/goog/gears/database_test.html","closure/goog/gears/gears_test.html","closure/goog/gears/loggerclient_test.html","closure/goog/gears/loggerserver_test.html","closure/goog/gears/logstore_test.html","closure/goog/gears/managedresourcestore_test.html","closure/goog/gears/multipartformdata_test.html","closure/goog/gears/urlcapture_test.html","closure/goog/gears/workerchannel_test.html","closure/goog/gears/workerpool_test.html","closure/goog/graphics/affinetransform_test.html","closure/goog/graphics/ext/coordinates_test.html","closure/goog/graphics/ext/element_test.html","closure/goog/graphics/ext/path_test.html","closure/goog/graphics/paths_test.html","closure/goog/graphics/path_test.html","closure/goog/graphics/solidfill_test.html","closure/goog/graphics/svggraphics_test.html","closure/goog/history/html5history_test.html","closure/goog/i18n/bidiformatter_test.html","closure/goog/i18n/bidi_test.html","closure/goog/i18n/charlistdecompressor_test.html","closure/goog/i18n/currency_test.html","closure/goog/i18n/datetimeformat_test.html","closure/goog/i18n/datetimeparse_test.html","closure/goog/i18n/graphemebreak_test.html","closure/goog/i18n/messageformat_test.html","closure/goog/i18n/mime_test.html","closure/goog/i18n/numberformat_test.html","closure/goog/i18n/timezone_test.html","closure/goog/i18n/uchar/localnamefetcher_test.html","closure/goog/i18n/uchar/remotenamefetcher_test.html","closure/goog/i18n/uchar_test.html","closure/goog/iter/iter_test.html","closure/goog/json/json_test.html","closure/goog/json/processor_test.html","closure/goog/labs/classdef/classdef_test.html","closure/goog/labs/mock/mock_test.html","closure/goog/labs/net/image_test.html","closure/goog/labs/net/xhr_test.html","closure/goog/labs/object/object_test.html","closure/goog/labs/observe/observableset_test.html","closure/goog/labs/observe/observationset_test.html","closure/goog/labs/observe/observer_test.html","closure/goog/labs/observe/simpleobservable_test.html","closure/goog/labs/structs/map_test.html","closure/goog/labs/structs/multimap_test.html","closure/goog/labs/testing/assertthat_test.html","closure/goog/labs/testing/decoratormatcher_test.html","closure/goog/labs/testing/dictionarymatcher_test.html","closure/goog/labs/testing/logicmatcher_test.html","closure/goog/labs/testing/numbermatcher_test.html","closure/goog/labs/testing/objectmatcher_test.html","closure/goog/labs/testing/stringmatcher_test.html","closure/goog/locale/countrylanguagenames_test.html","closure/goog/locale/genericfontnames_test.html","closure/goog/locale/timezonedetection_test.html","closure/goog/locale/timezonelist_test.html","closure/goog/math/bezier_test.html","closure/goog/math/box_test.html","closure/goog/math/coordinate3_test.html","closure/goog/math/coordinate_test.html","closure/goog/math/exponentialbackoff_test.html","closure/goog/math/integer_test.html","closure/goog/math/interpolator/linear1_test.html","closure/goog/math/interpolator/pchip1_test.html","closure/goog/math/interpolator/spline1_test.html","closure/goog/math/line_test.html","closure/goog/math/long_test.html","closure/goog/math/math_test.html","closure/goog/math/matrix_test.html","closure/goog/math/rangeset_test.html","closure/goog/math/range_test.html","closure/goog/math/rect_test.html","closure/goog/math/size_test.html","closure/goog/math/tdma_test.html","closure/goog/math/vec2_test.html","closure/goog/math/vec3_test.html","closure/goog/memoize/memoize_test.html","closure/goog/messaging/abstractchannel_test.html","closure/goog/messaging/bufferedchannel_test.html","closure/goog/messaging/deferredchannel_test.html","closure/goog/messaging/loggerclient_test.html","closure/goog/messaging/loggerserver_test.html","closure/goog/messaging/messaging_test.html","closure/goog/messaging/multichannel_test.html","closure/goog/messaging/portcaller_test.html","closure/goog/messaging/portchannel_test.html","closure/goog/messaging/portnetwork_test.html","closure/goog/messaging/portoperator_test.html","closure/goog/messaging/respondingchannel_test.html","closure/goog/module/moduleinfo_test.html","closure/goog/module/moduleloadcallback_test.html","closure/goog/module/moduleloader_test.html","closure/goog/module/modulemanager_test.html","closure/goog/net/browserchannel_test.html","closure/goog/net/bulkloader_test.html","closure/goog/net/channelrequest_test.html","closure/goog/net/cookies_test.html","closure/goog/net/crossdomainrpc_test.html","closure/goog/net/filedownloader_test.html","closure/goog/net/iframeio_different_base_test.html","closure/goog/net/iframeio_test.html","closure/goog/net/iframeloadmonitor_test.html","closure/goog/net/iframe_xhr_test.html","closure/goog/net/imageloader_test.html","closure/goog/net/ipaddress_test.html","closure/goog/net/jsloader_test.html","closure/goog/net/jsonp_test.html","closure/goog/net/mockxhrlite_test.html","closure/goog/net/multiiframeloadmonitor_test.html","closure/goog/net/networktester_test.html","closure/goog/net/websocket_test.html","closure/goog/net/xhrio_test.html","closure/goog/net/xhrlite_test.html","closure/goog/net/xhrmanager_test.html","closure/goog/net/xpc/crosspagechannel_test.html","closure/goog/net/xpc/iframepollingtransport_test.html","closure/goog/net/xpc/nativemessagingtransport_test.html","closure/goog/object/object_test.html","closure/goog/positioning/anchoredposition_test.html","closure/goog/positioning/anchoredviewportposition_test.html","closure/goog/positioning/clientposition_test.html","closure/goog/positioning/menuanchoredposition_test.html","closure/goog/positioning/positioning_test.html","closure/goog/positioning/viewportclientposition_test.html","closure/goog/proto2/descriptor_test.html","closure/goog/proto2/fielddescriptor_test.html","closure/goog/proto2/message_test.html","closure/goog/proto2/objectserializer_test.html","closure/goog/proto2/pbliteserializer_test.html","closure/goog/proto2/proto_test.html","closure/goog/proto2/textformatserializer_test.html","closure/goog/proto/serializer_test.html","closure/goog/pubsub/pubsub_test.html","closure/goog/result/chain_test.html","closure/goog/result/combine_test.html","closure/goog/result/deferredadaptor_test.html","closure/goog/result/simpleresult_test.html","closure/goog/result/transform_test.html","closure/goog/result/wait_test.html","closure/goog/soy/renderer_test.html","closure/goog/soy/soy_test.html","closure/goog/spell/spellcheck_test.html","closure/goog/stats/basicstat_test.html","closure/goog/storage/collectablestorage_test.html","closure/goog/storage/encryptedstorage_test.html","closure/goog/storage/expiringstorage_test.html","closure/goog/storage/mechanism/html5localstorage_test.html","closure/goog/storage/mechanism/html5sessionstorage_test.html","closure/goog/storage/mechanism/ieuserdata_test.html","closure/goog/storage/mechanism/mechanismfactory_test.html","closure/goog/storage/mechanism/prefixedmechanism_test.html","closure/goog/storage/richstorage_test.html","closure/goog/storage/storage_test.html","closure/goog/string/linkify_test.html","closure/goog/string/path_test.html","closure/goog/string/stringbuffer_test.html","closure/goog/string/stringformat_test.html","closure/goog/string/string_test.html","closure/goog/structs/avltree_test.html","closure/goog/structs/circularbuffer_test.html","closure/goog/structs/collection_test.html","closure/goog/structs/heap_test.html","closure/goog/structs/inversionmap_test.html","closure/goog/structs/linkedmap_test.html","closure/goog/structs/map_test.html","closure/goog/structs/pool_test.html","closure/goog/structs/prioritypool_test.html","closure/goog/structs/priorityqueue_test.html","closure/goog/structs/quadtree_test.html","closure/goog/structs/queue_test.html","closure/goog/structs/set_test.html","closure/goog/structs/stringset_test.html","closure/goog/structs/structs_test.html","closure/goog/structs/treenode_test.html","closure/goog/structs/trie_test.html","closure/goog/style/bidi_test.html","closure/goog/style/cursor_test.html","closure/goog/style/style_quirks_test.html","closure/goog/style/style_test.html","closure/goog/style/style_webkit_scrollbars_test.html","closure/goog/style/transition_test.html","closure/goog/testing/asserts_test.html","closure/goog/testing/async/mockcontrol_test.html","closure/goog/testing/asynctestcase_async_test.html","closure/goog/testing/asynctestcase_noasync_test.html","closure/goog/testing/asynctestcase_test.html","closure/goog/testing/benchmarks/jsbinarysizebutton_test.html","closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html","closure/goog/testing/continuationtestcase_test.html","closure/goog/testing/deferredtestcase_test.html","closure/goog/testing/dom_test.html","closure/goog/testing/editor/dom_test.html","closure/goog/testing/editor/testhelper_test.html","closure/goog/testing/events/eventobserver_test.html","closure/goog/testing/events/events_test.html","closure/goog/testing/events/matchers_test.html","closure/goog/testing/events/onlinehandler_test.html","closure/goog/testing/expectedfailures_test.html","closure/goog/testing/fs/blob_test.html","closure/goog/testing/fs/directoryentry_test.html","closure/goog/testing/fs/entry_test.html","closure/goog/testing/fs/fileentry_test.html","closure/goog/testing/fs/filereader_test.html","closure/goog/testing/fs/filewriter_test.html","closure/goog/testing/fs/fs_test.html","closure/goog/testing/fs/integration_test.html","closure/goog/testing/functionmock_test.html","closure/goog/testing/loosemock_test.html","closure/goog/testing/mockclassfactory_test.html","closure/goog/testing/mockclock_test.html","closure/goog/testing/mockcontrol_test.html","closure/goog/testing/mockmatchers_test.html","closure/goog/testing/mockrandom_test.html","closure/goog/testing/mockrange_test.html","closure/goog/testing/mockstorage_test.html","closure/goog/testing/mock_test.html","closure/goog/testing/mockuseragent_test.html","closure/goog/testing/net/xhrio_test.html","closure/goog/testing/performancetimer_test.html","closure/goog/testing/propertyreplacer_test.html","closure/goog/testing/proto2/proto2_test.html","closure/goog/testing/pseudorandom_test.html","closure/goog/testing/recordfunction_test.html","closure/goog/testing/shardingtestcase_test.html","closure/goog/testing/singleton_test.html","closure/goog/testing/stacktrace_test.html","closure/goog/testing/strictmock_test.html","closure/goog/testing/style/layoutasserts_test.html","closure/goog/testing/style/style_test.html","closure/goog/testing/ui/rendererasserts_test.html","closure/goog/testing/ui/style_test.html","closure/goog/timer/timer_test.html","closure/goog/tweak/entries_test.html","closure/goog/tweak/registry_test.html","closure/goog/tweak/tweakui_test.html","closure/goog/ui/ac/ac_test.html","closure/goog/ui/ac/arraymatcher_test.html","closure/goog/ui/ac/autocomplete_test.html","closure/goog/ui/ac/inputhandler_test.html","closure/goog/ui/ac/remotearraymatcher_test.html","closure/goog/ui/ac/renderer_test.html","closure/goog/ui/activitymonitor_test.html","closure/goog/ui/advancedtooltip_test.html","closure/goog/ui/animatedzippy_test.html","closure/goog/ui/bidiinput_test.html","closure/goog/ui/buttonrenderer_test.html","closure/goog/ui/button_test.html","closure/goog/ui/checkbox_test.html","closure/goog/ui/colorbutton_test.html","closure/goog/ui/colormenubuttonrenderer_test.html","closure/goog/ui/colorpalette_test.html","closure/goog/ui/combobox_test.html","closure/goog/ui/component_test.html","closure/goog/ui/containerrenderer_test.html","closure/goog/ui/containerscroller_test.html","closure/goog/ui/container_test.html","closure/goog/ui/controlrenderer_test.html","closure/goog/ui/control_test.html","closure/goog/ui/cookieeditor_test.html","closure/goog/ui/customcolorpalette_test.html","closure/goog/ui/datepicker_test.html","closure/goog/ui/decorate_test.html","closure/goog/ui/dialog_test.html","closure/goog/ui/dimensionpicker_test.html","closure/goog/ui/drilldownrow_test.html","closure/goog/ui/editor/abstractdialog_test.html","closure/goog/ui/editor/bubble_test.html","closure/goog/ui/editor/linkdialog_test.html","closure/goog/ui/editor/toolbarfactory_test.html","closure/goog/ui/emoji/emojipicker_test.html","closure/goog/ui/emoji/popupemojipicker_test.html","closure/goog/ui/emoji/spriteinfo_test.html","closure/goog/ui/filteredmenu_test.html","closure/goog/ui/formpost_test.html","closure/goog/ui/hovercard_test.html","closure/goog/ui/hsvapalette_test.html","closure/goog/ui/hsvpalette_test.html","closure/goog/ui/idletimer_test.html","closure/goog/ui/iframemask_test.html","closure/goog/ui/inputdatepicker_test.html","closure/goog/ui/keyboardshortcuthandler_test.html","closure/goog/ui/labelinput_test.html","closure/goog/ui/media/flashobject_test.html","closure/goog/ui/media/flickr_test.html","closure/goog/ui/media/googlevideo_test.html","closure/goog/ui/media/mediamodel_test.html","closure/goog/ui/media/media_test.html","closure/goog/ui/media/mp3_test.html","closure/goog/ui/media/photo_test.html","closure/goog/ui/media/picasa_test.html","closure/goog/ui/media/vimeo_test.html","closure/goog/ui/media/youtube_test.html","closure/goog/ui/menubuttonrenderer_test.html","closure/goog/ui/menubutton_test.html","closure/goog/ui/menuitemrenderer_test.html","closure/goog/ui/menuitem_test.html","closure/goog/ui/menuseparatorrenderer_test.html","closure/goog/ui/menu_test.html","closure/goog/ui/modalpopup_test.html","closure/goog/ui/nativebuttonrenderer_test.html","closure/goog/ui/plaintextspellchecker_test.html","closure/goog/ui/popupbase_test.html","closure/goog/ui/popupcolorpicker_test.html","closure/goog/ui/popupmenu_test.html","closure/goog/ui/popup_test.html","closure/goog/ui/prompt_test.html","closure/goog/ui/rangemodel_test.html","closure/goog/ui/registry_test.html","closure/goog/ui/richtextspellchecker_test.html","closure/goog/ui/roundedpanel_test.html","closure/goog/ui/scrollfloater_test.html","closure/goog/ui/selectionmenubutton_test.html","closure/goog/ui/selectionmodel_test.html","closure/goog/ui/select_test.html","closure/goog/ui/serverchart_test.html","closure/goog/ui/sliderbase_test.html","closure/goog/ui/splitbehavior_test.html","closure/goog/ui/splitpane_test.html","closure/goog/ui/style/app/buttonrenderer_test.html","closure/goog/ui/style/app/menubuttonrenderer_test.html","closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html","closure/goog/ui/submenu_test.html","closure/goog/ui/tabbarrenderer_test.html","closure/goog/ui/tabbar_test.html","closure/goog/ui/tablesorter_test.html","closure/goog/ui/tabpane_test.html","closure/goog/ui/tabrenderer_test.html","closure/goog/ui/tab_test.html","closure/goog/ui/textarea_test.html","closure/goog/ui/toolbarcolormenubuttonrenderer_test.html","closure/goog/ui/tree/basenode_test.html","closure/goog/ui/tree/treecontrol_test.html","closure/goog/ui/tree/typeahead_test.html","closure/goog/ui/twothumbslider_test.html","closure/goog/ui/zippy_test.html","closure/goog/uri/uri_test.html","closure/goog/uri/utils_test.html","closure/goog/useragent/adobereader_test.html","closure/goog/useragent/flash_test.html","closure/goog/useragent/jscript_test.html","closure/goog/useragent/platform_test.html","closure/goog/useragent/product_test.html","closure/goog/useragent/useragent_quirks_test.html","closure/goog/useragent/useragent_test.html","closure/goog/vec/float32array_test.html","closure/goog/vec/float64array_test.html","closure/goog/vec/mat3_test.html","closure/goog/vec/mat4_test.html","closure/goog/vec/matrix3_test.html","closure/goog/vec/matrix4_test.html","closure/goog/vec/quaternion_test.html","closure/goog/vec/ray_test.html","closure/goog/vec/vec2_test.html","closure/goog/vec/vec3_test.html","closure/goog/vec/vec4_test.html","closure/goog/window/window_test.html","third_party/closure/goog/dojo/dom/query_test.html","third_party/closure/goog/loremipsum/text/loremipsum_test.html","third_party/closure/goog/mochikit/async/deferredlist_test.html","third_party/closure/goog/mochikit/async/deferred_test.html"];
+"closure/goog/array/array_test.html","closure/goog/asserts/asserts_test.html","closure/goog/async/animationdelay_test.html","closure/goog/async/conditionaldelay_test.html","closure/goog/async/delay_test.html","closure/goog/async/throttle_test.html","closure/goog/base_test.html","closure/goog/color/alpha_test.html","closure/goog/color/color_test.html","closure/goog/crypt/aes_test.html","closure/goog/crypt/arc4_test.html","closure/goog/crypt/base64_test.html","closure/goog/crypt/basen_test.html","closure/goog/crypt/blobhasher_test.html","closure/goog/crypt/cbc_test.html","closure/goog/crypt/crypt_test.html","closure/goog/crypt/hash32_test.html","closure/goog/crypt/hmac_test.html","closure/goog/crypt/md5_test.html","closure/goog/crypt/pbkdf2_test.html","closure/goog/crypt/sha1_test.html","closure/goog/crypt/sha224_test.html","closure/goog/crypt/sha256_test.html","closure/goog/cssom/cssom_test.html","closure/goog/cssom/iframe/style_test.html","closure/goog/datasource/datasource_test.html","closure/goog/datasource/expr_test.html","closure/goog/datasource/fastdatanode_test.html","closure/goog/datasource/jsxmlhttpdatasource_test.html","closure/goog/date/daterange_test.html","closure/goog/date/date_test.html","closure/goog/date/relative_test.html","closure/goog/date/utcdatetime_test.html","closure/goog/db/db_test.html","closure/goog/debug/console_test.html","closure/goog/debug/debug_test.html","closure/goog/debug/debugwindow_test.html","closure/goog/debug/devcss/devcss_test.html","closure/goog/debug/enhanceerror_test.html","closure/goog/debug/entrypointregistry_test.html","closure/goog/debug/errorhandler_async_test.html","closure/goog/debug/errorhandler_test.html","closure/goog/debug/errorreporter_test.html","closure/goog/debug/error_test.html","closure/goog/debug/fpsdisplay_test.html","closure/goog/debug/logbuffer_test.html","closure/goog/debug/logger_test.html","closure/goog/debug/logrecordserializer_test.html","closure/goog/debug/reflect_test.html","closure/goog/debug/tracer_test.html","closure/goog/disposable/disposable_test.html","closure/goog/dom/a11y_test.html","closure/goog/dom/abstractrange_test.html","closure/goog/dom/annotate_test.html","closure/goog/dom/browserrange/browserrange_test.html","closure/goog/dom/bufferedviewportsizemonitor_test.html","closure/goog/dom/classes_quirks_test.html","closure/goog/dom/classes_test.html","closure/goog/dom/classlist_test.html","closure/goog/dom/controlrange_test.html","closure/goog/dom/dataset_test.html","closure/goog/dom/dom_quirks_test.html","closure/goog/dom/dom_test.html","closure/goog/dom/fontsizemonitor_test.html","closure/goog/dom/forms_test.html","closure/goog/dom/iframe_test.html","closure/goog/dom/iter_test.html","closure/goog/dom/multirange_test.html","closure/goog/dom/nodeiterator_test.html","closure/goog/dom/nodeoffset_test.html","closure/goog/dom/pattern/matcher_test.html","closure/goog/dom/pattern/pattern_test.html","closure/goog/dom/range_test.html","closure/goog/dom/savedcaretrange_test.html","closure/goog/dom/savedrange_test.html","closure/goog/dom/selection_test.html","closure/goog/dom/tagiterator_test.html","closure/goog/dom/tagname_test.html","closure/goog/dom/textrangeiterator_test.html","closure/goog/dom/textrange_test.html","closure/goog/dom/viewportsizemonitor_test.html","closure/goog/dom/xml_test.html","closure/goog/editor/clicktoeditwrapper_test.html","closure/goog/editor/contenteditablefield_test.html","closure/goog/editor/field_test.html","closure/goog/editor/focus_test.html","closure/goog/editor/icontent_test.html","closure/goog/editor/link_test.html","closure/goog/editor/node_test.html","closure/goog/editor/plugins/abstractbubbleplugin_test.html","closure/goog/editor/plugins/abstractdialogplugin_test.html","closure/goog/editor/plugins/abstracttabhandler_test.html","closure/goog/editor/plugins/basictextformatter_test.html","closure/goog/editor/plugins/blockquote_test.html","closure/goog/editor/plugins/emoticons_test.html","closure/goog/editor/plugins/enterhandler_test.html","closure/goog/editor/plugins/equationeditorplugin_test.html","closure/goog/editor/plugins/firststrong_test.html","closure/goog/editor/plugins/headerformatter_test.html","closure/goog/editor/plugins/linkbubble_test.html","closure/goog/editor/plugins/linkdialogplugin_test.html","closure/goog/editor/plugins/linkshortcutplugin_test.html","closure/goog/editor/plugins/listtabhandler_test.html","closure/goog/editor/plugins/loremipsum_test.html","closure/goog/editor/plugins/removeformatting_test.html","closure/goog/editor/plugins/spacestabhandler_test.html","closure/goog/editor/plugins/tableeditor_test.html","closure/goog/editor/plugins/tagonenterhandler_test.html","closure/goog/editor/plugins/undoredomanager_test.html","closure/goog/editor/plugins/undoredostate_test.html","closure/goog/editor/plugins/undoredo_test.html","closure/goog/editor/plugin_test.html","closure/goog/editor/range_test.html","closure/goog/editor/seamlessfield_quirks_test.html","closure/goog/editor/seamlessfield_test.html","closure/goog/editor/style_test.html","closure/goog/editor/table_test.html","closure/goog/events/actioneventwrapper_test.html","closure/goog/events/actionhandler_test.html","closure/goog/events/browserevent_test.html","closure/goog/events/eventhandler_test.html","closure/goog/events/events_test.html","closure/goog/events/eventtarget_test.html","closure/goog/events/eventtarget_via_googevents_test.html","closure/goog/events/event_test.html","closure/goog/events/filedrophandler_test.html","closure/goog/events/imehandler_test.html","closure/goog/events/keycodes_test.html","closure/goog/events/keyhandler_test.html","closure/goog/events/mousewheelhandler_test.html","closure/goog/events/onlinelistener_test.html","closure/goog/events/pastehandler_test.html","closure/goog/format/emailaddress_test.html","closure/goog/format/format_test.html","closure/goog/format/htmlprettyprinter_test.html","closure/goog/format/jsonprettyprinter_test.html","closure/goog/fs/fs_test.html","closure/goog/functions/functions_test.html","closure/goog/fx/abstractdragdrop_test.html","closure/goog/fx/anim/anim_test.html","closure/goog/fx/animationqueue_test.html","closure/goog/fx/animation_test.html","closure/goog/fx/css3/transition_test.html","closure/goog/fx/cssspriteanimation_test.html","closure/goog/fx/dragdropgroup_test.html","closure/goog/fx/dragger_test.html","closure/goog/fx/draglistgroup_test.html","closure/goog/fx/dragscrollsupport_test.html","closure/goog/fx/fx_test.html","closure/goog/gears/basestore_test.html","closure/goog/gears/database_test.html","closure/goog/gears/gears_test.html","closure/goog/gears/loggerclient_test.html","closure/goog/gears/loggerserver_test.html","closure/goog/gears/logstore_test.html","closure/goog/gears/managedresourcestore_test.html","closure/goog/gears/multipartformdata_test.html","closure/goog/gears/urlcapture_test.html","closure/goog/gears/workerchannel_test.html","closure/goog/gears/workerpool_test.html","closure/goog/graphics/affinetransform_test.html","closure/goog/graphics/ext/coordinates_test.html","closure/goog/graphics/ext/element_test.html","closure/goog/graphics/ext/path_test.html","closure/goog/graphics/paths_test.html","closure/goog/graphics/path_test.html","closure/goog/graphics/solidfill_test.html","closure/goog/graphics/svggraphics_test.html","closure/goog/history/html5history_test.html","closure/goog/i18n/bidiformatter_test.html","closure/goog/i18n/bidi_test.html","closure/goog/i18n/charlistdecompressor_test.html","closure/goog/i18n/currency_test.html","closure/goog/i18n/datetimeformat_test.html","closure/goog/i18n/datetimeparse_test.html","closure/goog/i18n/graphemebreak_test.html","closure/goog/i18n/messageformat_test.html","closure/goog/i18n/mime_test.html","closure/goog/i18n/numberformat_test.html","closure/goog/i18n/timezone_test.html","closure/goog/i18n/uchar/localnamefetcher_test.html","closure/goog/i18n/uchar/remotenamefetcher_test.html","closure/goog/i18n/uchar_test.html","closure/goog/iter/iter_test.html","closure/goog/json/json_test.html","closure/goog/json/processor_test.html","closure/goog/labs/classdef/classdef_test.html","closure/goog/labs/mock/mock_test.html","closure/goog/labs/net/image_test.html","closure/goog/labs/net/xhr_test.html","closure/goog/labs/object/object_test.html","closure/goog/labs/observe/observableset_test.html","closure/goog/labs/observe/observationset_test.html","closure/goog/labs/observe/observer_test.html","closure/goog/labs/observe/simpleobservable_test.html","closure/goog/labs/structs/map_test.html","closure/goog/labs/structs/multimap_test.html","closure/goog/labs/testing/assertthat_test.html","closure/goog/labs/testing/decoratormatcher_test.html","closure/goog/labs/testing/dictionarymatcher_test.html","closure/goog/labs/testing/logicmatcher_test.html","closure/goog/labs/testing/numbermatcher_test.html","closure/goog/labs/testing/objectmatcher_test.html","closure/goog/labs/testing/stringmatcher_test.html","closure/goog/locale/countrylanguagenames_test.html","closure/goog/locale/genericfontnames_test.html","closure/goog/locale/timezonedetection_test.html","closure/goog/locale/timezonelist_test.html","closure/goog/math/bezier_test.html","closure/goog/math/box_test.html","closure/goog/math/coordinate3_test.html","closure/goog/math/coordinate_test.html","closure/goog/math/exponentialbackoff_test.html","closure/goog/math/integer_test.html","closure/goog/math/interpolator/linear1_test.html","closure/goog/math/interpolator/pchip1_test.html","closure/goog/math/interpolator/spline1_test.html","closure/goog/math/line_test.html","closure/goog/math/long_test.html","closure/goog/math/math_test.html","closure/goog/math/matrix_test.html","closure/goog/math/rangeset_test.html","closure/goog/math/range_test.html","closure/goog/math/rect_test.html","closure/goog/math/size_test.html","closure/goog/math/tdma_test.html","closure/goog/math/vec2_test.html","closure/goog/math/vec3_test.html","closure/goog/memoize/memoize_test.html","closure/goog/messaging/abstractchannel_test.html","closure/goog/messaging/bufferedchannel_test.html","closure/goog/messaging/deferredchannel_test.html","closure/goog/messaging/loggerclient_test.html","closure/goog/messaging/loggerserver_test.html","closure/goog/messaging/messaging_test.html","closure/goog/messaging/multichannel_test.html","closure/goog/messaging/portcaller_test.html","closure/goog/messaging/portchannel_test.html","closure/goog/messaging/portnetwork_test.html","closure/goog/messaging/portoperator_test.html","closure/goog/messaging/respondingchannel_test.html","closure/goog/module/moduleinfo_test.html","closure/goog/module/moduleloadcallback_test.html","closure/goog/module/moduleloader_test.html","closure/goog/module/modulemanager_test.html","closure/goog/net/browserchannel_test.html","closure/goog/net/bulkloader_test.html","closure/goog/net/channelrequest_test.html","closure/goog/net/cookies_test.html","closure/goog/net/crossdomainrpc_test.html","closure/goog/net/filedownloader_test.html","closure/goog/net/iframeio_different_base_test.html","closure/goog/net/iframeio_test.html","closure/goog/net/iframeloadmonitor_test.html","closure/goog/net/iframe_xhr_test.html","closure/goog/net/imageloader_test.html","closure/goog/net/ipaddress_test.html","closure/goog/net/jsloader_test.html","closure/goog/net/jsonp_test.html","closure/goog/net/mockxhrlite_test.html","closure/goog/net/multiiframeloadmonitor_test.html","closure/goog/net/networktester_test.html","closure/goog/net/websocket_test.html","closure/goog/net/xhrio_test.html","closure/goog/net/xhrlite_test.html","closure/goog/net/xhrmanager_test.html","closure/goog/net/xpc/crosspagechannel_test.html","closure/goog/net/xpc/iframepollingtransport_test.html","closure/goog/net/xpc/nativemessagingtransport_test.html","closure/goog/object/object_test.html","closure/goog/positioning/anchoredposition_test.html","closure/goog/positioning/anchoredviewportposition_test.html","closure/goog/positioning/clientposition_test.html","closure/goog/positioning/menuanchoredposition_test.html","closure/goog/positioning/positioning_test.html","closure/goog/positioning/viewportclientposition_test.html","closure/goog/proto2/descriptor_test.html","closure/goog/proto2/fielddescriptor_test.html","closure/goog/proto2/message_test.html","closure/goog/proto2/objectserializer_test.html","closure/goog/proto2/pbliteserializer_test.html","closure/goog/proto2/proto_test.html","closure/goog/proto2/textformatserializer_test.html","closure/goog/proto/serializer_test.html","closure/goog/pubsub/pubsub_test.html","closure/goog/result/chain_test.html","closure/goog/result/combine_test.html","closure/goog/result/deferredadaptor_test.html","closure/goog/result/simpleresult_test.html","closure/goog/result/transform_test.html","closure/goog/result/wait_test.html","closure/goog/soy/renderer_test.html","closure/goog/soy/soy_test.html","closure/goog/spell/spellcheck_test.html","closure/goog/stats/basicstat_test.html","closure/goog/storage/collectablestorage_test.html","closure/goog/storage/encryptedstorage_test.html","closure/goog/storage/expiringstorage_test.html","closure/goog/storage/mechanism/html5localstorage_test.html","closure/goog/storage/mechanism/html5sessionstorage_test.html","closure/goog/storage/mechanism/ieuserdata_test.html","closure/goog/storage/mechanism/mechanismfactory_test.html","closure/goog/storage/mechanism/prefixedmechanism_test.html","closure/goog/storage/richstorage_test.html","closure/goog/storage/storage_test.html","closure/goog/string/linkify_test.html","closure/goog/string/path_test.html","closure/goog/string/stringbuffer_test.html","closure/goog/string/stringformat_test.html","closure/goog/string/string_test.html","closure/goog/structs/avltree_test.html","closure/goog/structs/circularbuffer_test.html","closure/goog/structs/collection_test.html","closure/goog/structs/heap_test.html","closure/goog/structs/inversionmap_test.html","closure/goog/structs/linkedmap_test.html","closure/goog/structs/map_test.html","closure/goog/structs/pool_test.html","closure/goog/structs/prioritypool_test.html","closure/goog/structs/priorityqueue_test.html","closure/goog/structs/quadtree_test.html","closure/goog/structs/queue_test.html","closure/goog/structs/set_test.html","closure/goog/structs/stringset_test.html","closure/goog/structs/structs_test.html","closure/goog/structs/treenode_test.html","closure/goog/structs/trie_test.html","closure/goog/style/bidi_test.html","closure/goog/style/cursor_test.html","closure/goog/style/style_quirks_test.html","closure/goog/style/style_test.html","closure/goog/style/style_webkit_scrollbars_test.html","closure/goog/style/transition_test.html","closure/goog/testing/asserts_test.html","closure/goog/testing/async/mockcontrol_test.html","closure/goog/testing/asynctestcase_async_test.html","closure/goog/testing/asynctestcase_noasync_test.html","closure/goog/testing/asynctestcase_test.html","closure/goog/testing/benchmarks/jsbinarysizebutton_test.html","closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html","closure/goog/testing/continuationtestcase_test.html","closure/goog/testing/deferredtestcase_test.html","closure/goog/testing/dom_test.html","closure/goog/testing/editor/dom_test.html","closure/goog/testing/editor/testhelper_test.html","closure/goog/testing/events/eventobserver_test.html","closure/goog/testing/events/events_test.html","closure/goog/testing/events/matchers_test.html","closure/goog/testing/events/onlinehandler_test.html","closure/goog/testing/expectedfailures_test.html","closure/goog/testing/fs/blob_test.html","closure/goog/testing/fs/directoryentry_test.html","closure/goog/testing/fs/entry_test.html","closure/goog/testing/fs/fileentry_test.html","closure/goog/testing/fs/filereader_test.html","closure/goog/testing/fs/filewriter_test.html","closure/goog/testing/fs/fs_test.html","closure/goog/testing/fs/integration_test.html","closure/goog/testing/functionmock_test.html","closure/goog/testing/loosemock_test.html","closure/goog/testing/mockclassfactory_test.html","closure/goog/testing/mockclock_test.html","closure/goog/testing/mockcontrol_test.html","closure/goog/testing/mockmatchers_test.html","closure/goog/testing/mockrandom_test.html","closure/goog/testing/mockrange_test.html","closure/goog/testing/mockstorage_test.html","closure/goog/testing/mock_test.html","closure/goog/testing/mockuseragent_test.html","closure/goog/testing/net/xhrio_test.html","closure/goog/testing/performancetimer_test.html","closure/goog/testing/propertyreplacer_test.html","closure/goog/testing/proto2/proto2_test.html","closure/goog/testing/pseudorandom_test.html","closure/goog/testing/recordfunction_test.html","closure/goog/testing/shardingtestcase_test.html","closure/goog/testing/singleton_test.html","closure/goog/testing/stacktrace_test.html","closure/goog/testing/strictmock_test.html","closure/goog/testing/style/layoutasserts_test.html","closure/goog/testing/style/style_test.html","closure/goog/testing/ui/rendererasserts_test.html","closure/goog/testing/ui/style_test.html","closure/goog/timer/timer_test.html","closure/goog/tweak/entries_test.html","closure/goog/tweak/registry_test.html","closure/goog/tweak/tweakui_test.html","closure/goog/ui/ac/ac_test.html","closure/goog/ui/ac/arraymatcher_test.html","closure/goog/ui/ac/autocomplete_test.html","closure/goog/ui/ac/inputhandler_test.html","closure/goog/ui/ac/remotearraymatcher_test.html","closure/goog/ui/ac/renderer_test.html","closure/goog/ui/activitymonitor_test.html","closure/goog/ui/advancedtooltip_test.html","closure/goog/ui/animatedzippy_test.html","closure/goog/ui/bidiinput_test.html","closure/goog/ui/buttonrenderer_test.html","closure/goog/ui/button_test.html","closure/goog/ui/checkbox_test.html","closure/goog/ui/colorbutton_test.html","closure/goog/ui/colormenubuttonrenderer_test.html","closure/goog/ui/colorpalette_test.html","closure/goog/ui/combobox_test.html","closure/goog/ui/component_test.html","closure/goog/ui/containerrenderer_test.html","closure/goog/ui/containerscroller_test.html","closure/goog/ui/container_test.html","closure/goog/ui/controlrenderer_test.html","closure/goog/ui/control_test.html","closure/goog/ui/cookieeditor_test.html","closure/goog/ui/customcolorpalette_test.html","closure/goog/ui/datepicker_test.html","closure/goog/ui/decorate_test.html","closure/goog/ui/dialog_test.html","closure/goog/ui/dimensionpicker_test.html","closure/goog/ui/drilldownrow_test.html","closure/goog/ui/editor/abstractdialog_test.html","closure/goog/ui/editor/bubble_test.html","closure/goog/ui/editor/linkdialog_test.html","closure/goog/ui/editor/toolbarfactory_test.html","closure/goog/ui/emoji/emojipicker_test.html","closure/goog/ui/emoji/popupemojipicker_test.html","closure/goog/ui/emoji/spriteinfo_test.html","closure/goog/ui/filteredmenu_test.html","closure/goog/ui/formpost_test.html","closure/goog/ui/hovercard_test.html","closure/goog/ui/hsvapalette_test.html","closure/goog/ui/hsvpalette_test.html","closure/goog/ui/idletimer_test.html","closure/goog/ui/iframemask_test.html","closure/goog/ui/inputdatepicker_test.html","closure/goog/ui/keyboardshortcuthandler_test.html","closure/goog/ui/labelinput_test.html","closure/goog/ui/media/flashobject_test.html","closure/goog/ui/media/flickr_test.html","closure/goog/ui/media/googlevideo_test.html","closure/goog/ui/media/mediamodel_test.html","closure/goog/ui/media/media_test.html","closure/goog/ui/media/mp3_test.html","closure/goog/ui/media/photo_test.html","closure/goog/ui/media/picasa_test.html","closure/goog/ui/media/vimeo_test.html","closure/goog/ui/media/youtube_test.html","closure/goog/ui/menubuttonrenderer_test.html","closure/goog/ui/menubutton_test.html","closure/goog/ui/menuitemrenderer_test.html","closure/goog/ui/menuitem_test.html","closure/goog/ui/menuseparatorrenderer_test.html","closure/goog/ui/menu_test.html","closure/goog/ui/modalpopup_test.html","closure/goog/ui/nativebuttonrenderer_test.html","closure/goog/ui/plaintextspellchecker_test.html","closure/goog/ui/popupbase_test.html","closure/goog/ui/popupcolorpicker_test.html","closure/goog/ui/popupmenu_test.html","closure/goog/ui/popup_test.html","closure/goog/ui/prompt_test.html","closure/goog/ui/rangemodel_test.html","closure/goog/ui/registry_test.html","closure/goog/ui/richtextspellchecker_test.html","closure/goog/ui/roundedpanel_test.html","closure/goog/ui/scrollfloater_test.html","closure/goog/ui/selectionmenubutton_test.html","closure/goog/ui/selectionmodel_test.html","closure/goog/ui/select_test.html","closure/goog/ui/serverchart_test.html","closure/goog/ui/sliderbase_test.html","closure/goog/ui/splitbehavior_test.html","closure/goog/ui/splitpane_test.html","closure/goog/ui/style/app/buttonrenderer_test.html","closure/goog/ui/style/app/menubuttonrenderer_test.html","closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html","closure/goog/ui/submenu_test.html","closure/goog/ui/tabbarrenderer_test.html","closure/goog/ui/tabbar_test.html","closure/goog/ui/tablesorter_test.html","closure/goog/ui/tabpane_test.html","closure/goog/ui/tabrenderer_test.html","closure/goog/ui/tab_test.html","closure/goog/ui/textarea_test.html","closure/goog/ui/toolbarcolormenubuttonrenderer_test.html","closure/goog/ui/tree/basenode_test.html","closure/goog/ui/tree/treecontrol_test.html","closure/goog/ui/tree/typeahead_test.html","closure/goog/ui/twothumbslider_test.html","closure/goog/ui/zippy_test.html","closure/goog/uri/uri_test.html","closure/goog/uri/utils_test.html","closure/goog/useragent/adobereader_test.html","closure/goog/useragent/flash_test.html","closure/goog/useragent/jscript_test.html","closure/goog/useragent/platform_test.html","closure/goog/useragent/product_test.html","closure/goog/useragent/useragent_quirks_test.html","closure/goog/useragent/useragent_test.html","closure/goog/vec/float32array_test.html","closure/goog/vec/float64array_test.html","closure/goog/vec/mat3_test.html","closure/goog/vec/mat4_test.html","closure/goog/vec/matrix3_test.html","closure/goog/vec/matrix4_test.html","closure/goog/vec/quaternion_test.html","closure/goog/vec/ray_test.html","closure/goog/vec/vec2_test.html","closure/goog/vec/vec3_test.html","closure/goog/vec/vec4_test.html","closure/goog/window/window_test.html","third_party/closure/goog/dojo/dom/query_test.html","third_party/closure/goog/loremipsum/text/loremipsum_test.html","third_party/closure/goog/mochikit/async/deferredlist_test.html","third_party/closure/goog/mochikit/async/deferred_test.html"];
View
1  closure/goog/deps.js
@@ -179,6 +179,7 @@ goog.addDependency('editor/plugins/emoticons.js', ['goog.editor.plugins.Emoticon
goog.addDependency('editor/plugins/enterhandler.js', ['goog.editor.plugins.EnterHandler'], ['goog.dom', 'goog.dom.AbstractRange', 'goog.dom.NodeOffset', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.BrowserFeature', 'goog.editor.Plugin', 'goog.editor.node', 'goog.editor.plugins.Blockquote', 'goog.editor.range', 'goog.editor.style', 'goog.events.KeyCodes', 'goog.string', 'goog.userAgent']);
goog.addDependency('editor/plugins/equationeditorbubble.js', ['goog.editor.plugins.equation.EquationBubble'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.string.Unicode', 'goog.ui.editor.Bubble', 'goog.ui.equation.ImageRenderer']);
goog.addDependency('editor/plugins/equationeditorplugin.js', ['goog.editor.plugins.EquationEditorPlugin'], ['goog.editor.Command', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.range', 'goog.functions', 'goog.ui.editor.AbstractDialog.Builder', 'goog.ui.editor.EquationEditorDialog', 'goog.ui.editor.EquationEditorOkEvent', 'goog.ui.equation.EquationEditor', 'goog.ui.equation.ImageRenderer', 'goog.ui.equation.TexEditor']);
+goog.addDependency('editor/plugins/firststrong.js', ['goog.editor.plugins.FirstStrong'], ['goog.dom', 'goog.dom.NodeIterator', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.editor.Command', 'goog.editor.Plugin', 'goog.editor.node', 'goog.i18n.bidi', 'goog.i18n.uChar', 'goog.iter', 'goog.userAgent']);
goog.addDependency('editor/plugins/headerformatter.js', ['goog.editor.plugins.HeaderFormatter'], ['goog.editor.Command', 'goog.editor.Plugin', 'goog.userAgent']);
goog.addDependency('editor/plugins/linkbubble.js', ['goog.editor.plugins.LinkBubble', 'goog.editor.plugins.LinkBubble.Action'], ['goog.array', 'goog.dom', 'goog.editor.BrowserFeature', 'goog.editor.Command', 'goog.editor.Link', 'goog.editor.plugins.AbstractBubblePlugin', 'goog.editor.range', 'goog.string', 'goog.style', 'goog.ui.editor.messages', 'goog.uri.utils', 'goog.window']);
goog.addDependency('editor/plugins/linkdialogplugin.js', ['goog.editor.plugins.LinkDialogPlugin'], ['goog.array', 'goog.dom', 'goog.editor.Command', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.events.EventHandler', 'goog.functions', 'goog.ui.editor.AbstractDialog.EventType', 'goog.ui.editor.LinkDialog', 'goog.ui.editor.LinkDialog.EventType', 'goog.ui.editor.LinkDialog.OkEvent', 'goog.uri.utils']);
View
5 closure/goog/editor/field.js
@@ -1013,10 +1013,7 @@ goog.editor.Field.MUTATION_EVENTS_GECKO = [
* @protected
*/
goog.editor.Field.prototype.setupMutationEventHandlersGecko = function() {
- // Always use DOMSubtreeModified on Gecko when not using an iframe so that
- // DOM mutations outside the Field do not trigger handleMutationEventGecko_.
- if (goog.editor.BrowserFeature.HAS_DOM_SUBTREE_MODIFIED_EVENT ||
- !this.usesIframe()) {
+ if (goog.editor.BrowserFeature.HAS_DOM_SUBTREE_MODIFIED_EVENT) {
this.eventRegister.listen(this.getElement(), 'DOMSubtreeModified',
this.handleMutationEventGecko_);
} else {
View
296 closure/goog/editor/plugins/firststrong.js
@@ -0,0 +1,296 @@
+// Copyright 2012 The Closure Library Authors. 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.
+
+/**
+ * @fileoverview A plugin to enable the First Strong Bidi algorithm. The First
+ * Strong algorithm as a heuristic used to automatically set paragraph direction
+ * depending on its content.
+ *
+ * In the documentation below, a 'paragraph' is the local element which we
+ * evaluate as a whole for purposes of determining directionality. It may be a
+ * block-level element (e.g. <div>) or a whole list (e.g. <ul>).
+ *
+ * This implementation is based on, but is not identical to, the original
+ * First Strong algorithm defined in Unicode
+ * @see http://www.unicode.org/reports/tr9/
+ * The central difference from the original First Strong algorithm is that this
+ * implementation decides the paragraph direction based on the first strong
+ * character that is <em>typed</em> into the paragraph, regardless of its
+ * location in the paragraph, as opposed to the original algorithm where it is
+ * the first character in the paragraph <em>by location</em>, regardless of
+ * whether other strong characters already appear in the paragraph, further its
+ * start.
+ *
+ * <em>Please note</em> that this plugin does not perform the direction change
+ * itself. Rather, it fires editor commands upon the key up event when a
+ * direction change needs to be performed; {@code goog.editor.Command.DIR_RTL}
+ * or {@code goog.editor.Command.DIR_RTL}.
+ *
+ */
+
+goog.provide('goog.editor.plugins.FirstStrong');
+
+goog.require('goog.dom');
+goog.require('goog.dom.NodeIterator');
+goog.require('goog.dom.NodeType');
+goog.require('goog.dom.TagName');
+goog.require('goog.editor.Command');
+goog.require('goog.editor.Plugin');
+goog.require('goog.editor.node');
+goog.require('goog.i18n.bidi');
+goog.require('goog.i18n.uChar');
+goog.require('goog.iter');
+goog.require('goog.userAgent');
+
+
+
+/**
+ * First Strong plugin.
+ * @constructor
+ * @extends {goog.editor.Plugin}
+ */
+goog.editor.plugins.FirstStrong = function() {
+ goog.base(this);
+
+ /**
+ * Indicates whether or not the cursor is in a paragraph we have not yet
+ * finished evaluating for directionality. This is set to true whenever the
+ * cursor is moved, and set to false after seeing a strong character in the
+ * paragraph the cursor is currently in.
+ *
+ * @type {boolean}
+ * @private
+ */
+ this.isNewBlock_ = true;
+
+ /**
+ * Indicates whether or not the current paragraph the cursor is in should be
+ * set to Right-To-Left directionality.
+ *
+ * @type {boolean}
+ * @private
+ */
+ this.switchToRtl_ = false;
+
+ /**
+ * Indicates whether or not the current paragraph the cursor is in should be
+ * set to Left-To-Right directionality.
+ *
+ * @type {boolean}
+ * @private
+ */
+ this.switchToLtr_ = false;
+};
+goog.inherits(goog.editor.plugins.FirstStrong, goog.editor.Plugin);
+
+
+/** @override */
+goog.editor.plugins.FirstStrong.prototype.getTrogClassId = function() {
+ return 'FirstStrong';
+};
+
+
+/** @override */
+goog.editor.plugins.FirstStrong.prototype.queryCommandValue =
+ function(command) {
+ return false;
+};
+
+
+/** @override */
+goog.editor.plugins.FirstStrong.prototype.handleSelectionChange =
+ function(e, node) {
+ this.isNewBlock_ = true;
+ return false;
+};
+
+
+/** @override */
+goog.editor.plugins.FirstStrong.prototype.handleKeyPress = function(e) {
+ if (!this.isNewBlock_) {
+ return false; // We've already determined this paragraph's direction.
+ }
+ var newChar = goog.i18n.uChar.fromCharCode(e.charCode);
+ if (!newChar) {
+ return false; // Unrecognized key.
+ }
+ var isLtr = goog.i18n.bidi.isLtrChar(newChar);
+ var isRtl = !isLtr && goog.i18n.bidi.isRtlChar(newChar);
+ if (!isLtr && !isRtl) {
+ return false; // This character cannot change anything (it is not Strong).
+ }
+ // This character is Strongly LTR or Strongly RTL. We might switch direction
+ // on it now, but in any case we do not need to check any more characters in
+ // this paragraph after it.
+ this.isNewBlock_ = false;
+
+ // Are there no Strong characters already in the paragraph?
+ if (this.isNeutralBlock_()) {
+ this.switchToRtl_ = isRtl;
+ this.switchToLtr_ = isLtr;
+ }
+ return false;
+};
+
+
+/**
+ * Calls the flip directionality commands. This is done here so things go into
+ * the redo-undo stack at the expected order; fist enter the input, then flip
+ * directionality.
+ * @override
+ */
+goog.editor.plugins.FirstStrong.prototype.handleKeyUp = function(e) {
+ if (this.switchToRtl_) {
+ var field = this.getFieldObject();
+ field.dispatchChange(true);
+ field.execCommand(goog.editor.Command.DIR_RTL);
+ this.switchToRtl_ = false;
+ } else if (this.switchToLtr_) {
+ var field = this.getFieldObject();
+ field.dispatchChange(true);
+ field.execCommand(goog.editor.Command.DIR_LTR);
+ this.switchToLtr_ = false;
+ }
+ return false;
+};
+
+
+/**
+ * @return {Element} The lowest Block element ancestor of the node where the
+ * next character will be placed.
+ * @private
+ */
+goog.editor.plugins.FirstStrong.prototype.getBlockAncestor_ = function() {
+ var start = this.getFieldObject().getRange().getStartNode();
+ // Go up in the DOM until we reach a Block element.
+ while (!goog.editor.plugins.FirstStrong.isBlock_(start)) {
+ start = start.parentNode;
+ }
+ return /** @type {Element} */ start;
+};
+
+
+/**
+ * @return {boolean} Whether the paragraph where the next character will be
+ * entered contains only non-Strong characters.
+ * @private
+ */
+goog.editor.plugins.FirstStrong.prototype.isNeutralBlock_ = function() {
+ var root = this.getBlockAncestor_();
+ var cursor = this.getFieldObject().getRange().getStartNode();
+
+ if (root == cursor) { // This will be the beginning of a new text node.
+ cursor = root.lastChild;
+ }
+
+ // In FireFox the BR tag also represents a change in paragraph if not inside a
+ // list. So we need special handling to only look at the sub-block between
+ // BR elements.
+ var blockFunction = (goog.userAgent.GECKO &&
+ !this.isList_(root)) ?
+ goog.editor.plugins.FirstStrong.isGeckoBlock_ :
+ goog.editor.plugins.FirstStrong.isBlock_;
+ var paragraph = this.getTextAround_(root, cursor,
+ blockFunction);
+ // Not using {@code goog.i18n.bidi.isNeutralText} as it contains additional,
+ // unwanted checks to the content.
+ return !goog.i18n.bidi.hasAnyLtr(paragraph) &&
+ !goog.i18n.bidi.hasAnyRtl(paragraph);
+};
+
+
+/**
+ * Checks if an element is a list element ('UL' or 'OL').
+ *
+ * @param {Element} element The element to test.
+ * @return {boolean} Whether the element is a list element ('UL' or 'OL').
+ * @private
+ */
+goog.editor.plugins.FirstStrong.prototype.isList_ = function(element) {
+ if (!element) {
+ return false;
+ }
+ var tagName = element.tagName;
+ return tagName == goog.dom.TagName.UL || tagName == goog.dom.TagName.OL;
+};
+
+
+/**
+ * Returns the text within the local paragraph around the cursor.
+ * Notice that for GECKO a BR represents a pargraph change despite not being a
+ * block element.
+ *
+ * @param {Element} root The first block element ancestor of the node the cursor
+ * is in.
+ * @param {Node} cursorLocation Node where the cursor currently is, marking the
+ * paragraph whose text we will return.
+ * @param {function(Node): boolean} isParagraphBoundry The function to determine
+ * if a node represents the start or end of the paragraph.
+ * @return {string} the text in the paragraph around the cursor location.
+ * @private
+ */
+goog.editor.plugins.FirstStrong.prototype.getTextAround_ = function(root,
+ cursorLocation, isParagraphBoundry) {
+ // The buffer where we're collecting the text.
+ var buffer = [];
+ // Have we reached the cursor yet, or are we still before it?
+ var pastCursorLocation = false;
+
+ if (root && cursorLocation) {
+ goog.iter.some(new goog.dom.NodeIterator(root), function(node) {
+ if (node == cursorLocation) {
+ pastCursorLocation = true;
+ } else if (isParagraphBoundry(node)) {
+ if (pastCursorLocation) {
+ // This is the end of the paragraph containing the cursor. We're done.
+ return true;
+ } else {
+ // All we collected so far does not count; it was in a previous
+ // paragraph that did not contain the cursor.
+ buffer = [];
+ }
+ }
+ if (node.nodeType == goog.dom.NodeType.TEXT) {
+ buffer.push(node.nodeValue);
+ }
+ return false; // Keep going.
+ });
+ }
+ return buffer.join('');
+};
+
+
+/**
+ * @param {Node} node Node to check.
+ * @return {boolean} Does the given node represent a Block element? Notice we do
+ * not consider list items as Block elements in the algorithm.
+ * @private
+ */
+goog.editor.plugins.FirstStrong.isBlock_ = function(node) {
+ return !!node && goog.editor.node.isBlockTag(node) &&
+ node.tagName != goog.dom.TagName.LI;
+};
+
+
+/**
+ * @param {Node} node Node to check.
+ * @return {boolean} Does the given node represent a Block element from the
+ * point of view of FireFox? Notice we do not consider list items as Block
+ * elements in the algorithm.
+ * @private
+ */
+goog.editor.plugins.FirstStrong.isGeckoBlock_ = function(node) {
+ return !!node && (node.tagName == goog.dom.TagName.BR ||
+ goog.editor.plugins.FirstStrong.isBlock_(node));
+};
View
331 closure/goog/editor/plugins/firststrong_test.html
@@ -0,0 +1,331 @@
+<!DOCTYPE html>
+<!--
+Copyright 2012 The Closure Library Authors. All Rights Reserved.
+
+Use of this source code is governed by the Apache License, Version 2.0.
+See the COPYING file for details.
+-->
+<html>
+<head>
+<meta charset="utf-8" />
+<title>Trogedit Unit Tests - goog.editor.plugins.FirstStrong</title>
+<script src="../../base.js"></script>
+<script>
+ goog.require('goog.dom');
+ goog.require('goog.dom.DomHelper');
+ goog.require('goog.dom.Range');
+ goog.require('goog.editor.Command');
+ goog.require('goog.editor.Field');
+ goog.require('goog.editor.plugins.FirstStrong');
+ goog.require('goog.editor.range');
+ goog.require('goog.events.KeyCodes');
+ goog.require('goog.testing.editor.TestHelper');
+ goog.require('goog.testing.events');
+ goog.require('goog.testing.jsunit');
+ goog.require('goog.userAgent');
+
+</script>
+</head>
+<body>
+ <div id='root'>
+ <div id='field'></div>
+ </div>
+<script>
+
+// The key code for the Hebrew א, a strongly RTL letter.
+var ALEPH_KEYCODE = 1488;
+
+var field;
+var fieldElement;
+var dom;
+var helper;
+var triggeredCommand = null;
+
+function setUp() {
+ field = new goog.editor.Field('field');
+ field.registerPlugin(new goog.editor.plugins.FirstStrong());
+ field.makeEditable();
+
+ fieldElement = field.getElement();
+
+ helper = new goog.testing.editor.TestHelper(fieldElement);
+
+ dom = field.getEditableDomHelper();
+
+ // Mock out execCommand to see if a direction change has been triggered.
+ field.execCommand = function(command) {
+ if (command == goog.editor.Command.DIR_LTR ||
+ command == goog.editor.Command.DIR_RTL)
+ triggeredCommand = command;
+ };
+}
+
+function tearDown() {
+ triggeredCommand = null;
+}
+
+function testFirstCharacter_RTL() {
+ field.setHtml(false, '<div id="text">&nbsp;</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstCharacter_LTR() {
+ field.setHtml(false, '<div dir="rtl" id="text">&nbsp;</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testFirstStrongCharacter_RTL() {
+ field.setHtml(false, '<div id="text">123.7 3121, <b><++{}></b> - $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstStrongCharacter_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text">123.7 3121, <b><++{}></b> - $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testNotStrongCharacter_RTL() {
+ field.setHtml(false, '<div id="text">123.7 3121, - $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement, goog.events.KeyCodes.NINE);
+ assertNoCommand();
+}
+
+function testNotStrongCharacter_LTR() {
+ field.setHtml(false, '<div dir="rtl" id="text">123.7 3121 $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement, goog.events.KeyCodes.NINE);
+ assertNoCommand();
+}
+
+function testNotFirstStrongCharacter_RTL() {
+ field.setHtml(false, '<div id="text">123.7 3121, <b>English</b> - $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertNoCommand();
+}
+
+function testNotFirstStrongCharacter_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text">123.7 3121, <b>עברית</b> - $45</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertNoCommand();
+}
+
+function testFirstStrongCharacterWithInnerDiv_RTL() {
+ field.setHtml(false,
+ '<div id="text">123.7 3121, <b id="b"><++{}></b>' +
+ '<div id="inner">English</div>' +
+ '</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstStrongCharacterWithInnerDiv_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text">123.7 3121, <b id="b"><++{}></b>' +
+ '<div id="inner">English</div>' +
+ '</div>');
+ field.focusAndPlaceCursorAtStart();
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testFirstStrongCharacterInParagraph_RTL() {
+ field.setHtml(false,
+ '<div id="text1">1&gt; English</div>' +
+ '<div id="text2">2&gt;</div>' +
+ '<div id="text3">3&gt;</div>');
+ goog.dom.Range.createCaret(dom.$('text2'), 0).select();
+
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstStrongCharacterInParagraph_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text1">1&gt; עברית</div>' +
+ '<div dir="rtl" id="text2">2&gt;</div>' +
+ '<div dir="rtl" id="text3">3&gt;</div>');
+ goog.dom.Range.createCaret(dom.$('text2'), 0).select();
+
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testFirstStrongCharacterInList_RTL() {
+ field.setHtml(false,
+ '<div id="text1">1&gt; English</div>' +
+ '<ul id="list">' +
+ '<li>10&gt;</li>' +
+ '<li id="li2"></li>' +
+ '<li>30</li>' +
+ '</ul>' +
+ '<div id="text3">3&gt;</div>');
+ goog.editor.range.placeCursorNextTo(dom.$('li2'), true);
+
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstStrongCharacterInList_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text1">1&gt; English</div>' +
+ '<ul dir="rtl" id="list">' +
+ '<li>10&gt;</li>' +
+ '<li id="li2"></li>' +
+ '<li>30</li>' +
+ '</ul>' +
+ '<div dir="rtl" id="text3">3&gt;</div>');
+ goog.editor.range.placeCursorNextTo(dom.$('li2'), true);
+
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testNotFirstStrongCharacterInList_RTL() {
+ field.setHtml(false,
+ '<div id="text1">1</div>' +
+ '<ul id="list">' +
+ '<li>10&gt;</li>' +
+ '<li id="li2"></li>' +
+ '<li>30<b>3<i>Hidden English</i>32</b></li>' +
+ '</ul>' +
+ '<div id="text3">3&gt;</div>');
+ goog.editor.range.placeCursorNextTo(dom.$('li2'), true);
+
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertNoCommand();
+}
+
+function testNotFirstStrongCharacterInList_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="text1">1&gt; English</div>' +
+ '<ul dir="rtl" id="list">' +
+ '<li>10&gt;</li>' +
+ '<li id="li2"></li>' +
+ '<li>30<b>3<i>עברית סמויה</i>32</b></li>' +
+ '</ul>' +
+ '<div dir="rtl" id="text3">3&gt;</div>');
+ goog.editor.range.placeCursorNextTo(dom.$('li2'), true);
+
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertNoCommand();
+}
+
+function testFirstStrongCharacterWithBR_RTL() {
+ field.setHtml(false,
+ '<div id="container">' +
+ '<div id="text1">ABC</div>' +
+ '<div id="text2">' +
+ '1<br>' +
+ '2<b id="inner">3</b><i>4<u>5<br>' +
+ '6</u>7</i>8</b>9<br>' +
+ '10' +
+ '</div>' +
+ '<div id="text3">11</div>' +
+ '</div>');
+
+ goog.editor.range.placeCursorNextTo(dom.$('inner'), true);
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertRTL();
+}
+
+function testFirstStrongCharacterWithBR_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="container">' +
+ '<div dir="rtl" id="text1">אבג</div>' +
+ '<div dir="rtl" id="text2">' +
+ '1<br>' +
+ '2<b id="inner">3</b><i>4<u>5<br>' +
+ '6</u>7</i>8</b>9<br>' +
+ '10' +
+ '</div>' +
+ '<div dir="rtl" id="text3">11</div>' +
+ '</div>');
+
+ goog.editor.range.placeCursorNextTo(dom.$('inner'), true);
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertLTR();
+}
+
+function testNotFirstStrongCharacterInBR_RTL() {
+ field.setHtml(false,
+ '<div id="container">' +
+ '<div id="text1">ABC</div>' +
+ '<div id="text2">' +
+ '1<br>' +
+ '2<b id="inner">3</b><i><em>4G</em><u>5<br>' +
+ '6</u>7</i>8</b>9<br>' +
+ '10' +
+ '</div>' +
+ '<div id="text3">11</div>' +
+ '</div>');
+
+ goog.editor.range.placeCursorNextTo(dom.$('inner'), true);
+ goog.testing.events.fireNonAsciiKeySequence(fieldElement,
+ goog.events.KeyCodes.T, ALEPH_KEYCODE);
+ assertNoCommand();
+}
+
+function testNotFirstStrongCharacterInBR_LTR() {
+ field.setHtml(false,
+ '<div dir="rtl" id="container">' +
+ '<div dir="rtl" id="text1">ABC</div>' +
+ '<div dir="rtl" id="text2">' +
+ '1<br>' +
+ '2<b id="inner">3</b><i><em>4G</em><u>5<br>' +
+ '6</u>7</i>8</b>9<br>' +
+ '10' +
+ '</div>' +
+ '<div dir="rtl" id="text3">11</div>' +
+ '</div>');
+
+ goog.editor.range.placeCursorNextTo(dom.$('inner'), true);
+ goog.testing.events.fireKeySequence(fieldElement,
+ goog.events.KeyCodes.A);
+ assertNoCommand();
+}
+
+function assertRTL() {
+ assertEquals(goog.editor.Command.DIR_RTL, triggeredCommand);
+}
+
+function assertLTR() {
+ assertEquals(goog.editor.Command.DIR_LTR, triggeredCommand);
+}
+
+function assertNoCommand() {
+ assertNull(triggeredCommand);
+}
+
+</script>
+</body>
+</html>
View
19 closure/goog/editor/plugins/removeformatting.js
@@ -185,16 +185,9 @@ goog.editor.plugins.RemoveFormatting.prototype.removeFormatting_ = function() {
* @return {Node} The table, or null if one was not found.
* @private
*/
-goog.editor.plugins.RemoveFormatting.prototype.getTableAncestor_ = function(
- nodeToCheck) {
- var fieldElement = this.getFieldObject().getElement();
- while (nodeToCheck && nodeToCheck != fieldElement) {
- if (nodeToCheck.tagName == goog.dom.TagName.TABLE) {
- return nodeToCheck;
- }
- nodeToCheck = nodeToCheck.parentNode;
- }
- return null;
+goog.editor.plugins.RemoveFormatting.getTableAncestor_ = function(nodeToCheck) {
+ return goog.dom.getAncestor(nodeToCheck,
+ function(node) { return node.tagName == goog.dom.TagName.TABLE; }, true);
};
@@ -502,8 +495,10 @@ goog.editor.plugins.RemoveFormatting.prototype.convertSelectedHtmlText_ =
var expandedRange = goog.editor.range.expand(range,
this.getFieldObject().getElement());
- var startInTable = this.getTableAncestor_(expandedRange.getStartNode());
- var endInTable = this.getTableAncestor_(expandedRange.getEndNode());
+ var startInTable = goog.editor.plugins.RemoveFormatting.getTableAncestor_(
+ expandedRange.getStartNode());
+ var endInTable = goog.editor.plugins.RemoveFormatting.getTableAncestor_(
+ expandedRange.getEndNode());
if (startInTable || endInTable) {
if (startInTable == endInTable) {
View
20 closure/goog/editor/plugins/removeformatting_test.html
@@ -32,17 +32,7 @@
</head>
<body>
-<!--
-This wrapper table is outside the mock editor and only used ensure that it is
-ignored by the tests.
--->
-<table>
-<tr>
-<td>
<div id="html"></div>
-</td>
-</tr>
-</table>
<div id="abcde">abcde</div>
@@ -861,18 +851,16 @@
div.innerHTML = "foo<table><tr><td>foo</td></tr></table>bar";
assertTrue('Full table is in table',
- !!FORMATTER.getTableAncestor_(div.childNodes[1]));
+ !!goog.editor.plugins.RemoveFormatting.getTableAncestor_(
+ div.childNodes[1]));
assertFalse('Outside of table',
- !!FORMATTER.getTableAncestor_(div.firstChild));
+ !!goog.editor.plugins.RemoveFormatting.getTableAncestor_(div.firstChild));
assertTrue('Table cell is in table',
- !!FORMATTER.getTableAncestor_(
+ !!goog.editor.plugins.RemoveFormatting.getTableAncestor_(
div.childNodes[1].firstChild.firstChild.firstChild));
- div.innerHTML = "foo";
- assertNull('No table inside field.',
- FORMATTER.getTableAncestor_(div.childNodes[0]));
}
/**
Please sign in to comment.
Something went wrong with that request. Please try again.