Commits

carkraus  committed 5d67585

update closure lib to rev2027

  • Participants
  • Parent commits ccbc20c

Comments (0)

Files changed (191)

File closure/closure-library/alltests.js

 // 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/arc4_test.html","closure/goog/crypt/base64_test.html","closure/goog/crypt/basen_test.html","closure/goog/crypt/blobhasher_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/sha1_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/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/classes_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/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/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_test.html","closure/goog/iter/iter_test.html","closure/goog/json/json_test.html","closure/goog/labs/async/chain_test.html","closure/goog/labs/async/combine_test.html","closure/goog/labs/async/deferredadaptor_test.html","closure/goog/labs/async/result/simpleresult_test.html","closure/goog/labs/async/transform_test.html","closure/goog/labs/async/wait_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/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/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/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/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/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/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/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_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/arc4_test.html","closure/goog/crypt/base64_test.html","closure/goog/crypt/basen_test.html","closure/goog/crypt/blobhasher_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/sha1_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/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/classes_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/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/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_test.html","closure/goog/iter/iter_test.html","closure/goog/json/json_test.html","closure/goog/labs/async/chain_test.html","closure/goog/labs/async/combine_test.html","closure/goog/labs/async/deferredadaptor_test.html","closure/goog/labs/async/simpleresult_test.html","closure/goog/labs/async/transform_test.html","closure/goog/labs/async/wait_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/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/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/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/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/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/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_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"];

File closure/closure-library/apply_patch.sh

+cd closure
+patch -p1 < ../issue5150047_16002.diff

File closure/closure-library/closure/goog/array/array.js

  *
  * See {@link http://tinyurl.com/developer-mozilla-org-array-foreach}
  *
- * @param {goog.array.ArrayLike} arr Array or array like object over
- *     which to iterate.
- * @param {?function(this: T, ...)} f The function to call for every element.
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this: S, T, number, ?): ?} f The function to call for every
+ *     element.
  *     This function takes 3 arguments (the element, the index and the array).
  *     The return value is ignored. The function is called only for indexes of
  *     the array which have assigned values; it is not called for indexes which
  *     have been deleted or which have never been assigned values.
- * @param {T=} opt_obj The object to be used as the value of 'this'
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
- * @template T
+ * @template T,S
  */
 goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES &&
                      goog.array.ARRAY_PROTOTYPE_.forEach ?
  * Calls a function for each element in an array, starting from the last
  * element rather than the first.
  *
- * @param {goog.array.ArrayLike} arr The array over which to iterate.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this: S, T, number, ?): ?} f The function to call for every
+ *     element. This function
  *     takes 3 arguments (the element, the index and the array). The return
  *     value is ignored.
- * @param {Object=} opt_obj The object to be used as the value of 'this'
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
+ * @template T,S
  */
 goog.array.forEachRight = function(arr, f, opt_obj) {
   var l = arr.length;  // must be fixed during loop... see docs
  *
  * See {@link http://tinyurl.com/developer-mozilla-org-array-filter}
  *
- * @param {goog.array.ArrayLike} arr The array over which to iterate.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?):boolean} f The function to call for
+ *     every element. This function
  *     takes 3 arguments (the element, the index and the array) and must
  *     return a Boolean. If the return value is true the element is added to the
  *     result array. If it is false the element is not included.
- * @param {Object=} opt_obj The object to be used as the value of 'this'
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
  * @return {!Array} a new array in which only elements that passed the test are
  *     present.
+ * @template T,S
  */
 goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES &&
                     goog.array.ARRAY_PROTOTYPE_.filter ?
  *
  * See {@link http://tinyurl.com/developer-mozilla-org-array-map}
  *
- * @param {goog.array.ArrayLike} arr The array over which to iterate.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?):?} f The function to call for every
+ *     element. This function
  *     takes 3 arguments (the element, the index and the array) and should
  *     return something. The result will be inserted into a new array.
- * @param {Object=} opt_obj The object to be used as the value of 'this'
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
  * @return {!Array} a new array with the results from f.
+ * @template T,S
  */
 goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES &&
                  goog.array.ARRAY_PROTOTYPE_.map ?
  * goog.array.reduce(a, function(r, v, i, arr) {return r + v;}, 0);
  * returns 10
  *
- * @param {goog.array.ArrayLike} arr The array over which to iterate.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, R, T, number, ?) : R} f The function to call for
+ *     every element. This function
  *     takes 4 arguments (the function's previous result or the initial value,
  *     the value of the current array element, the current array index, and the
  *     array itself)
  *     function(previousValue, currentValue, index, array).
- * @param {*} val The initial value to pass into the function on the first call.
- * @param {Object=} opt_obj  The object to be used as the value of 'this'
+ * @param {?} val The initial value to pass into the function on the first call.
+ * @param {S=} opt_obj  The object to be used as the value of 'this'
  *     within f.
- * @return {*} Result of evaluating f repeatedly across the values of the array.
+ * @return {R} Result of evaluating f repeatedly across the values of the array.
+ * @template T,S,R
  */
 goog.array.reduce = function(arr, f, val, opt_obj) {
   if (arr.reduce) {
  * goog.array.reduceRight(a, function(r, v, i, arr) {return r + v;}, '');
  * returns 'cba'
  *
- * @param {goog.array.ArrayLike} arr The array over which to iterate.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, R, T, number, ?) : R} f The function to call for
+ *     every element. This function
  *     takes 4 arguments (the function's previous result or the initial value,
  *     the value of the current array element, the current array index, and the
  *     array itself)
  *     function(previousValue, currentValue, index, array).
- * @param {*} val The initial value to pass into the function on the first call.
- * @param {Object=} opt_obj The object to be used as the value of 'this'
+ * @param {?} val The initial value to pass into the function on the first call.
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
- * @return {*} Object returned as a result of evaluating f repeatedly across the
+ * @return {R} Object returned as a result of evaluating f repeatedly across the
  *     values of the array.
+ * @template T,S,R
  */
 goog.array.reduceRight = function(arr, f, val, opt_obj) {
   if (arr.reduceRight) {
  *
  * See {@link http://tinyurl.com/developer-mozilla-org-array-some}
  *
- * @param {goog.array.ArrayLike} arr The array to check.
- * @param {Function} f The function to call for every element. This function
- *     takes 3 arguments (the element, the index and the array) and must
- *     return a Boolean.
- * @param {Object=} opt_obj  The object to be used as the value of 'this'
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call for
+ *     for every element. This function takes 3 arguments (the element, the
+ *     index and the array) and should return a boolean.
+ * @param {S=} opt_obj  The object to be used as the value of 'this'
  *     within f.
  * @return {boolean} true if any element passes the test.
+ * @template T,S
  */
 goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES &&
                   goog.array.ARRAY_PROTOTYPE_.some ?
  *
  * See {@link http://tinyurl.com/developer-mozilla-org-array-every}
  *
- * @param {goog.array.ArrayLike} arr The array to check.
- * @param {Function} f The function to call for every element. This function
- *     takes 3 arguments (the element, the index and the array) and must
- *     return a Boolean.
- * @param {Object=} opt_obj The object to be used as the value of 'this'
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call for
+ *     for every element. This function takes 3 arguments (the element, the
+ *     index and the array) and should return a boolean.
+ * @param {S=} opt_obj The object to be used as the value of 'this'
  *     within f.
  * @return {boolean} false if any element fails the test.
+ * @template T,S
  */
 goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES &&
                    goog.array.ARRAY_PROTOTYPE_.every ?
 /**
  * Search an array for the first element that satisfies a given condition and
  * return that element.
- * @param {goog.array.ArrayLike} arr The array to search.
- * @param {Function} f The function to call for every element. This function
- *     takes 3 arguments (the element, the index and the array) and should
- *     return a boolean.
- * @param {Object=} opt_obj An optional "this" context for the function.
- * @return {*} The first array element that passes the test, or null if no
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call
+ *     for every element. This function takes 3 arguments (the element, the
+ *     index and the array) and should return a boolean.
+ * @param {S=} opt_obj An optional "this" context for the function.
+ * @return {T} The first array element that passes the test, or null if no
  *     element is found.
+ * @template T,S
  */
 goog.array.find = function(arr, f, opt_obj) {
   var i = goog.array.findIndex(arr, f, opt_obj);
 /**
  * Search an array for the first element that satisfies a given condition and
  * return its index.
- * @param {goog.array.ArrayLike} arr The array to search.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call for
+ *     every element. This function
  *     takes 3 arguments (the element, the index and the array) and should
  *     return a boolean.
- * @param {Object=} opt_obj An optional "this" context for the function.
+ * @param {S=} opt_obj An optional "this" context for the function.
  * @return {number} The index of the first array element that passes the test,
  *     or -1 if no element is found.
+ * @template T,S
  */
 goog.array.findIndex = function(arr, f, opt_obj) {
   var l = arr.length;  // must be fixed during loop... see docs
 /**
  * Search an array (in reverse order) for the last element that satisfies a
  * given condition and return that element.
- * @param {goog.array.ArrayLike} arr The array to search.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call
+ *     for every element. This function
  *     takes 3 arguments (the element, the index and the array) and should
  *     return a boolean.
- * @param {Object=} opt_obj An optional "this" context for the function.
- * @return {*} The last array element that passes the test, or null if no
+ * @param {S=} opt_obj An optional "this" context for the function.
+ * @return {T} The last array element that passes the test, or null if no
  *     element is found.
+ * @template T,S
  */
 goog.array.findRight = function(arr, f, opt_obj) {
   var i = goog.array.findIndexRight(arr, f, opt_obj);
 /**
  * Search an array (in reverse order) for the last element that satisfies a
  * given condition and return its index.
- * @param {goog.array.ArrayLike} arr The array to search.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call
+ *     for every element. This function
  *     takes 3 arguments (the element, the index and the array) and should
  *     return a boolean.
  * @param {Object=} opt_obj An optional "this" context for the function.
  * @return {number} The index of the last array element that passes the test,
  *     or -1 if no element is found.
+ * @template T,S
  */
 goog.array.findIndexRight = function(arr, f, opt_obj) {
   var l = arr.length;  // must be fixed during loop... see docs
 
 /**
  * Pushes an item into an array, if it's not already in the array.
- * @param {Array} arr Array into which to insert the item.
- * @param {*} obj Value to add.
+ * @param {Array.<T>} arr Array into which to insert the item.
+ * @param {T} obj Value to add.
+ * @template T
  */
 goog.array.insert = function(arr, obj) {
   if (!goog.array.contains(arr, obj)) {
 
 /**
  * Inserts an object into an array before a specified object.
- * @param {Array} arr The array to modify.
- * @param {*} obj The object to insert.
- * @param {*=} opt_obj2 The object before which obj should be inserted. If obj2
+ * @param {Array.<T>} arr The array to modify.
+ * @param {T} obj The object to insert.
+ * @param {T=} opt_obj2 The object before which obj should be inserted. If obj2
  *     is omitted or not found, obj is inserted at the end of the array.
+ * @template T
  */
 goog.array.insertBefore = function(arr, obj, opt_obj2) {
   var i;
 
 /**
  * Removes the first value that satisfies the given condition.
- * @param {goog.array.ArrayLike} arr Array from which to remove value.
- * @param {Function} f The function to call for every element. This function
+ * @param {Array.<T>|goog.array.ArrayLike} arr Array or array
+ *     like object over which to iterate.
+ * @param {?function(this:S, T, number, ?) : boolean} f The function to call
+ *     for every element. This function
  *     takes 3 arguments (the element, the index and the array) and should
  *     return a boolean.
- * @param {Object=} opt_obj An optional "this" context for the function.
+ * @param {S=} opt_obj An optional "this" context for the function.
  * @return {boolean} True if an element was removed.
+ * @template T,S
  */
 goog.array.removeIf = function(arr, f, opt_obj) {
   var i = goog.array.findIndex(arr, f, opt_obj);
  * Array slice. This means that it might work on other objects similar to
  * arrays, such as the arguments object.
  *
- * @param {goog.array.ArrayLike} arr The array from which to copy a segment.
+ * @param {Array.<T>|goog.array.ArrayLike} arr The array from
+ * which to copy a segment.
  * @param {number} start The index of the first element to copy.
  * @param {number=} opt_end The index after the last element to copy.
- * @return {!Array} A new array containing the specified segment of the original
- *     array.
+ * @return {!Array.<T>} A new array containing the specified segment of the
+ *     original array.
+ * @template T
  */
 goog.array.slice = function(arr, start, opt_end) {
   goog.asserts.assert(arr.length != null);
  *
  * Runtime: Same as <code>Array.prototype.sort</code>
  *
- * @param {Array} arr The array to be sorted.
- * @param {Function=} opt_compareFn Optional comparison function by which the
+ * @param {Array.<T>} arr The array to be sorted.
+ * @param {?function(T,T):number=} opt_compareFn Optional comparison
+ *     function by which the
  *     array is to be ordered. Should take 2 arguments to compare, and return a
  *     negative number, zero, or a positive number depending on whether the
  *     first argument is less than, equal to, or greater than the second.
+ * @template T
  */
 goog.array.sort = function(arr, opt_compareFn) {
   // TODO(arv): Update type annotation since null is not accepted.
  * Runtime: Same as <code>Array.prototype.sort</code>, plus an additional
  * O(n) overhead of copying the array twice.
  *
- * @param {Array} arr The array to be sorted.
- * @param {function(*, *): number=} opt_compareFn Optional comparison function
+ * @param {Array.<T>} arr The array to be sorted.
+ * @param {?function(T, T): number=} opt_compareFn Optional comparison function
  *     by which the array is to be ordered. Should take 2 arguments to compare,
  *     and return a negative number, zero, or a positive number depending on
  *     whether the first argument is less than, equal to, or greater than the
  *     second.
+ * @template T
  */
 goog.array.stableSort = function(arr, opt_compareFn) {
   for (var i = 0; i < arr.length; i++) {
 
 /**
  * Tells if the array is sorted.
- * @param {!Array} arr The array.
- * @param {Function=} opt_compareFn Function to compare the array elements.
+ * @param {!Array.<T>} arr The array.
+ * @param {?function(T,T):number=} opt_compareFn Function to compare the
+ *     array elements.
  *     Should take 2 arguments to compare, and return a negative number, zero,
  *     or a positive number depending on whether the first argument is less
  *     than, equal to, or greater than the second.
  * @param {boolean=} opt_strict If true no equal elements are allowed.
  * @return {boolean} Whether the array is sorted.
+ * @template T
  */
 goog.array.isSorted = function(arr, opt_compareFn, opt_strict) {
   var compare = opt_compareFn || goog.array.defaultCompare;
  * 3-way array compare function.
  * @param {!goog.array.ArrayLike} arr1 The first array to compare.
  * @param {!goog.array.ArrayLike} arr2 The second array to compare.
- * @param {(function(*, *): number)=} opt_compareFn Optional comparison function
+ * @param {?function(?, ?): number=} opt_compareFn Optional comparison function
  *     by which the array is to be ordered. Should take 2 arguments to compare,
  *     and return a negative number, zero, or a positive number depending on
  *     whether the first argument is less than, equal to, or greater than the
 /**
  * Inserts a value into a sorted array. The array is not modified if the
  * value is already present.
- * @param {Array} array The array to modify.
- * @param {*} value The object to insert.
- * @param {Function=} opt_compareFn Optional comparison function by which the
+ * @param {Array.<T>} array The array to modify.
+ * @param {T} value The object to insert.
+ * @param {?function(T,T):number=} opt_compareFn Optional comparison function by
+ *     which the
  *     array is ordered. Should take 2 arguments to compare, and return a
  *     negative number, zero, or a positive number depending on whether the
  *     first argument is less than, equal to, or greater than the second.
  * @return {boolean} True if an element was inserted.
+ * @template T
  */
 goog.array.binaryInsert = function(array, value, opt_compareFn) {
   var index = goog.array.binarySearch(array, value, opt_compareFn);
 
 /**
  * Splits an array into disjoint buckets according to a splitting function.
- * @param {Array} array The array.
- * @param {Function} sorter Function to call for every element.  This
+ * @param {Array.<T>} array The array.
+ * @param {function(T,number,Array.<T>):?} sorter Function to call for every
+ *     element.  This
  *     takes 3 arguments (the element, the index and the array) and must
  *     return a valid object key (a string, number, etc), or undefined, if
  *     that object should not be placed in a bucket.
  * @return {!Object} An object, with keys being all of the unique return values
  *     of sorter, and values being arrays containing the items for
  *     which the splitter returned that key.
+ * @template T
  */
 goog.array.bucket = function(array, sorter) {
   var buckets = {};
  * expanded in-place recursively.
  *
  * @param {...*} var_args The values to flatten.
- * @return {!Array.<*>} An array containing the flattened values.
+ * @return {!Array} An array containing the flattened values.
  */
 goog.array.flatten = function(var_args) {
   var result = [];
  * For example, suppose list comprises [t, a, n, k, s]. After invoking
  * rotate(array, 1) (or rotate(array, -4)), array will comprise [s, t, a, n, k].
  *
- * @param {!Array.<*>} array The array to rotate.
+ * @param {!Array.<T>} array The array to rotate.
  * @param {number} n The amount to rotate.
- * @return {!Array.<*>} The array.
+ * @return {!Array.<T>} The array.
+ * @template T
  */
 goog.array.rotate = function(array, n) {
   goog.asserts.assert(array.length != null);
  * Runtime: O(n)
  *
  * @param {!Array} arr The array to be shuffled.
- * @param {Function=} opt_randFn Optional random function to use for shuffling.
+ * @param {function():number=} opt_randFn Optional random function to use for
+ *     shuffling.
  *     Takes no arguments, and returns a random number on the interval [0, 1).
  *     Defaults to Math.random() using JavaScript's built-in Math library.
  */

File closure/closure-library/closure/goog/asserts/asserts.js

 /**
  * Checks if the value is an instance of the user-defined type if
  * goog.asserts.ENABLE_ASSERTS is true.
+ *
+ * The compiler may tighten the type returned by this function.
+ *
  * @param {*} value The value to check.
  * @param {!Function} type A user-defined constructor.
  * @param {string=} opt_message Error message in case of failure.
  * @param {...*} var_args The items to substitute into the failure message.
  * @throws {goog.asserts.AssertionError} When the value is not an instance of
  *     type.
+ * @return {!Object}
  */
 goog.asserts.assertInstanceof = function(value, type, opt_message, var_args) {
   if (goog.asserts.ENABLE_ASSERTS && !(value instanceof type)) {
     goog.asserts.doAssertFailure_('instanceof check failed.', null,
         opt_message, Array.prototype.slice.call(arguments, 3));
   }
+  return /** @type {!Object} */(value);
 };
 

File closure/closure-library/closure/goog/async/animationdelay.js

 
 /**
  * Invokes the callback function after the delay successfully completes.
- * @param {Event|number=} opt_timestamp The time when the callback is called,
- *     or the event object that fired the before paint event.
  * @private
  */
-goog.async.AnimationDelay.prototype.doAction_ = function(opt_timestamp) {
+goog.async.AnimationDelay.prototype.doAction_ = function() {
   if (this.usingListeners_ && this.id_) {
     goog.events.unlistenByKey(this.id_);
   }
   this.id_ = null;
-  var timestamp =
-      goog.isNumber(opt_timestamp) ?
-          opt_timestamp :
-          goog.isDef(opt_timestamp) ?
-              (opt_timestamp['timeStamp'] || goog.now()) :
-              goog.now();
-  this.listener_.call(this.handler_, timestamp);
+
+  // We are not using the timestamp returned by requestAnimationFrame
+  // because it may be either a Date.now-style time or a
+  // high-resolution time (depending on browser implementation). Using
+  // goog.now() will ensure that the timestamp used is consistent and
+  // compatible with goog.fx.Animation.
+  this.listener_.call(this.handler_, goog.now());
 };
 
 

File closure/closure-library/closure/goog/async/animationdelay_test.html

 
 goog.require('goog.async.AnimationDelay');
 goog.require('goog.testing.AsyncTestCase');
+goog.require('goog.testing.PropertyReplacer');
 goog.require('goog.testing.jsunit');
-
+goog.require('goog.testing.recordFunction');
 
 </script>
 </head>
 <script type='text/javascript'>
 
 var testCase = goog.testing.AsyncTestCase.createAndInstall();
+var stubs = new goog.testing.PropertyReplacer();
+
+function tearDown() {
+  stubs.reset();
+}
 
 function testStart() {
   var callCount = 0;
   }, 500);
 }
 
+function testAlwaysUseGoogNowForHandlerTimestamp() {
+  var expectedValue = 12345.1;
+  stubs.set(goog, 'now', function() {
+    return expectedValue;
+  });
+
+  var handler = goog.testing.recordFunction(function(timestamp) {
+    assertEquals(expectedValue, timestamp);
+  });
+  var delay = new goog.async.AnimationDelay(handler);
+
+  delay.start();
+  testCase.waitForAsync('waiting for delay');
+
+  window.setTimeout(function() {
+    testCase.continueTesting();
+    assertEquals(1, handler.getCallCount());
+  }, 500);
+}
+
 </script>
 </body>
 </html>

File closure/closure-library/closure/goog/base.js

 
 
 /**
- * Forward declaration for the clone method. This is necessary until the
- * compiler can better support duck-typing constructs as used in
- * goog.cloneObject.
- *
- * TODO(brenneman): Remove once the JSCompiler can infer that the check for
- * proto.clone is safe in goog.cloneObject.
- *
- * @type {Function}
- */
-Object.prototype.clone;
-
-
-/**
  * A native implementation of goog.bind.
  * @param {Function} fn A function to partially apply.
  * @param {Object|undefined} selfObj Specifies the object which |this| should
   tempCtor.prototype = parentCtor.prototype;
   childCtor.superClass_ = parentCtor.prototype;
   childCtor.prototype = new tempCtor();
+  /** @override */
   childCtor.prototype.constructor = childCtor;
 };
 

File closure/closure-library/closure/goog/color/color.js

 
 
 /**
+ * RGB color representation. An array containing three elements [r, g, b],
+ * each an integer in [0, 255], representing the red, green, and blue components
+ * of the color respectively.
+ * @typedef {Array.<number>}
+ */
+goog.color.Rgb;
+
+
+/**
+ * HSV color representation. An array containing three elements [h, s, v]:
+ * h (hue) must be an integer in [0, 360], cyclic.
+ * s (saturation) must be a number in [0, 1].
+ * v (value/brightness) must be an integer in [0, 255].
+ * @typedef {Array.<number>}
+ */
+goog.color.Hsv;
+
+
+/**
+ * HSL color representation. An array containing three elements [h, s, l]:
+ * h (hue) must be an integer in [0, 360], cyclic.
+ * s (saturation) must be a number in [0, 1].
+ * l (lightness) must be a number in [0, 1].
+ * @typedef {Array.<number>}
+ */
+goog.color.Hsl;
+
+
+/**
  * Parses a color out of a string.
  * @param {string} str Color in some format.
  * @return {Object} Contains two properties: 'hex', which is a string containing
 
 /**
  * Parses red, green, blue components out of a valid rgb color string.
+ * Throws Error if the color string is invalid.
  * @param {string} str RGB representation of a color.
  *    {@see goog.color.isValidRgbColor_}.
- * @return {!Array.<number>} array containing [r, g, b], each an int in
- *    [0, 255].
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.parseRgb = function(str) {
   var rgb = goog.color.isValidRgbColor_(str);
 /**
  * Converts a hex representation of a color to RGB.
  * @param {string} hexColor Color to convert.
- * @return {!Array} array containing [r, g, b] as ints in [0, 255].
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.hexToRgb = function(hexColor) {
   hexColor = goog.color.normalizeHex(hexColor);
 
 /**
  * Converts a color from RGB to hex representation.
- * @param {Array.<number>} rgb Array of [r, g, b], with each value in [0, 255].
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
  * @return {string} hex representation of the color.
  */
 goog.color.rgbArrayToHex = function(rgb) {
  * @param {number} r Value of red, in [0, 255].
  * @param {number} g Value of green, in [0, 255].
  * @param {number} b Value of blue, in [0, 255].
- * @return {!Array.<number>} [h, s, l] values for the color, with h an int in
- *    [0, 360] and s and l in [0, 1].
+ * @return {!goog.color.Hsl} hsl representation of the color.
  */
 goog.color.rgbToHsl = function(r, g, b) {
   // First must normalize r, g, b to be between 0 and 1.
 
 /**
  * Converts a color from RGB color space to HSL color space.
- * @param {Array.<number>} rgb [r, g, b] values for the color, each in [0, 255].
- * @return {!Array.<number>} [h, s, l] values for the color, with h in [0, 360]
- *    and s and l in [0, 1].
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
+ * @return {!goog.color.Hsl} hsl representation of the color.
  */
 goog.color.rgbArrayToHsl = function(rgb) {
   return goog.color.rgbToHsl(rgb[0], rgb[1], rgb[2]);
  * @param {number} h Hue, in [0, 360].
  * @param {number} s Saturation, in [0, 1].
  * @param {number} l Luminosity, in [0, 1].
- * @return {!Array.<number>} [r, g, b] values for the color, with each an int in
- *    [0, 255].
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.hslToRgb = function(h, s, l) {
   var r = 0;
 
 /**
  * Converts a color from HSL color space to RGB color space.
- * @param {Array.<number>} hsl HSL values for the color, h in [0, 360], s and l
- *    in [0, 1].
- * @return {!Array.<number>} [r, g, b] values for the color, with each an int in
- *    [0, 255].
+ * @param {goog.color.Hsl} hsl hsl representation of the color.
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.hslArrayToRgb = function(hsl) {
   return goog.color.hslToRgb(hsl[0], hsl[1], hsl[2]);
  * '(r, g, b)', or 'rgb(r, g, b)', where each color component is an int in
  * [0, 255].
  * @param {string} str String to check.
- * @return {!Array.<number>} the integers [r, g, b] for valid colors or the
- *    empty array for invalid colors.
+ * @return {!goog.color.Rgb} the rgb representation of the color if it is
+ *     a valid color, or the empty array otherwise.
  * @private
  */
 goog.color.isValidRgbColor_ = function(str) {
  * Small helper method for use by goog.color and friends.
  * @param {string} hex Hex value to prepend if single digit.
  * @return {string} hex value prepended with zero if it was single digit,
- *    otherwise the same value that was passed in.
+ *     otherwise the same value that was passed in.
  */
 goog.color.prependZeroIfNecessaryHelper = function(hex) {
   return hex.length == 1 ? '0' + hex : hex;
  * Small helper method for use by goog.color and friends.
  * @param {string} str String to check.
  * @return {string} The value passed in, prepended with a '#' if it didn't
- *    already have one.
+ *     already have one.
  */
 goog.color.prependHashIfNecessaryHelper = function(str) {
   return str.charAt(0) == '#' ? str : '#' + str;
 /**
  * Takes an array of [r, g, b] and converts it into a string appropriate for
  * CSS styles.
- * @param {Array.<number>} rgb [r, g, b] with each value in [0, 255].
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
  * @return {string} string of the form 'rgb(r,g,b)'.
  * @private
  */
  * @param {number} h Hue value in [0, 360].
  * @param {number} s Saturation value in [0, 1].
  * @param {number} brightness brightness in [0, 255].
- * @return {!Array.<number>} Array of r,g,b values.
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.hsvToRgb = function(h, s, brightness) {
   var red = 0;
 
 /**
  * Converts from RGB values to an array of HSV values.
- * @param {number} red Red value.
- * @param {number} green Green value.
- * @param {number} blue Blue value.
- * @return {!Array.<number>} array of HSV values.
+ * @param {number} red Red value in [0, 255].
+ * @param {number} green Green value in [0, 255].
+ * @param {number} blue Blue value in [0, 255].
+ * @return {!goog.color.Hsv} hsv representation of the color.
  */
 goog.color.rgbToHsv = function(red, green, blue) {
 
 
 
 /**
- * Converts from r,g,b values to an array of HSV values
- * @param {Array.<number>} rgb RGB array.
- * @return {!Array.<number>} array of HSV values.
+ * Converts from an array of RGB values to an array of HSV values.
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
+ * @return {!goog.color.Hsv} hsv representation of the color.
  */
 goog.color.rgbArrayToHsv = function(rgb) {
   return goog.color.rgbToHsv(rgb[0], rgb[1], rgb[2]);
 
 
 /**
- * Converts an HSV triplet to an RGB array
- * @param {Array.<number>} hsv Array of HSV values.
- * @return {!Array.<number>} Array of r,g,b values.
+ * Converts an HSV triplet to an RGB array.
+ * @param {goog.color.Hsv} hsv hsv representation of the color.
+ * @return {!goog.color.Rgb} rgb representation of the color.
  */
 goog.color.hsvArrayToRgb = function(hsv) {
   return goog.color.hsvToRgb(hsv[0], hsv[1], hsv[2]);
 /**
  * Converts a hex representation of a color to HSL.
  * @param {string} hex Color to convert.
- * @return {!Array.<number>} [h, s, l] values for the color, with h an int in
- *    [0, 360] and s and l in [0, 1].
+ * @return {!goog.color.Hsv} hsv representation of the color.
  */
 goog.color.hexToHsl = function(hex) {
   var rgb = goog.color.hexToRgb(hex);
 
 /**
  * Converts from an hsl array to a hex string
- * @param {Array.<number>} hsl Array of [h, s, l], in
- *     [[0, 360], [0, 1], [0, 1]].
+ * @param {goog.color.Hsl} hsl hsl representation of the color.
  * @return {string} hex representation of the color.
  */
 goog.color.hslArrayToHex = function(hsl) {
 /**
  * Converts a hex representation of a color to HSV
  * @param {string} hex Color to convert.
- * @return {!Array.<number>} [h, s, v] in [[0, 1], [0, 1], [0, 255]].
+ * @return {!goog.color.Hsv} hsv representation of the color.
  */
 goog.color.hexToHsv = function(hex) {
   return goog.color.rgbArrayToHsv(goog.color.hexToRgb(hex));
 
 /**
  * Converts from an HSV array to a hex string
- * @param {Array} hsv Array of [h, s, v] in [[0, 360], [0, 1], [0, 255]].
+ * @param {goog.color.Hsv} hsv hsv representation of the color.
  * @return {string} hex representation of the color.
  */
 goog.color.hsvArrayToHex = function(hsv) {
  * In short, a vector for color (H, S, L) in this system can be expressed as
  * (S*L'*cos(2*PI*H), S*L'*sin(2*PI*H), L), where L' = abs(L - 0.5), and we
  * simply calculate the 1-2 distance using these coordinates
- * @param {Array.<number>} hsl1 First color represented by a 3-element array
- *     with hue in range [0, 360], and saturation and luminance values in the
- *     range[0, 1].
- * @param {Array.<number>} hsl2 Second color represented by a 3-element array
- *     with hue in range [0, 360], and saturation and luminance values in the
- *     range[0, 1].
+ * @param {goog.color.Hsl} hsl1 First color in hsl representation.
+ * @param {goog.color.Hsl} hsl2 Second color in hsl representation.
  * @return {number} Distance between the two colors, in the range [0, 1].
  */
 goog.color.hslDistance = function(hsl1, hsl2) {
 /**
  * Blend two colors together, using the specified factor to indicate the weight
  * given to the first color
- * @param {Array.<number>} rgb1 First color represented by a 3-element array
- *     with red, green, and blue values respectively, in the range [0, 255].
- * @param {Array.<number>} rgb2 Second color represented by a 3-element array
- *     with red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb1 First color represented in rgb.
+ * @param {goog.color.Rgb} rgb2 Second color represented in rgb.
  * @param {number} factor The weight to be given to rgb1 over rgb2. Values
  *     should be in the range [0, 1]. If less than 0, factor will be set to 0.
  *     If greater than 1, factor will be set to 1.
- * @return {!Array.<number>} Combined color represented by a 3-element
- *     array with red, green, and blue values respectively, in the
- *     range [0, 255].
+ * @return {!goog.color.Rgb} Combined color represented in rgb.
  */
 goog.color.blend = function(rgb1, rgb2, factor) {
   factor = goog.math.clamp(factor, 0, 1);
 
 /**
  * Adds black to the specified color, darkening it
- * @param {Array.<number>} rgb Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
  * @param {number} factor Number in the range [0, 1]. 0 will do nothing, while
  *     1 will return black. If less than 0, factor will be set to 0. If greater
  *     than 1, factor will be set to 1.
- * @return {!Array.<number>} Combined color represented by a 3-element array
- *     with red, green, and blue values respectively, in the range [0, 255].
+ * @return {!goog.color.Rgb} Combined rgb color.
  */
 goog.color.darken = function(rgb, factor) {
   var black = [0, 0, 0];
 
 /**
  * Adds white to the specified color, lightening it
- * @param {Array.<number>} rgb Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb rgb representation of the color.
  * @param {number} factor Number in the range [0, 1].  0 will do nothing, while
  *     1 will return white. If less than 0, factor will be set to 0. If greater
  *     than 1, factor will be set to 1.
- * @return {!Array.<number>} Combined color represented by a 3-element array
- *     with red, green, and blue values respectively, in the range [0, 255].
+ * @return {!goog.color.Rgb} Combined rgb color.
  */
 goog.color.lighten = function(rgb, factor) {
   var white = [255, 255, 255];
  * Find the "best" (highest-contrast) of the suggested colors for the prime
  * color. Uses W3C formula for judging readability and visual accessibility:
  * http://www.w3.org/TR/AERT#color-contrast
- * @param {Array.<number>} prime Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
- * @param {Array.<Array>} suggestions Array of colors, each a 3-element array
- *     with red, green, and blue values respectively, in the range [0, 255].
- * @return {!Array.<number>} Highest-contrast color represented by a 3-element
- *     array with red, green and blue values respectively, in the range
- *     [0, 255].
+ * @param {goog.color.Rgb} prime Color represented as a rgb array.
+ * @param {Array.<goog.color.Rgb>} suggestions Array of colors,
+ *     each representing a rgb array.
+ * @return {!goog.color.Rgb} Highest-contrast color represented by an array..
  */
 goog.color.highContrast = function(prime, suggestions) {
   var suggestionsWithDiff = [];
  * Calculate brightness of a color according to YIQ formula (brightness is Y).
  * More info on YIQ here: http://en.wikipedia.org/wiki/YIQ. Helper method for
  * goog.color.highContrast()
- * @param {Array.<number>} rgb Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb Color represented by a rgb array.
  * @return {number} brightness (Y).
  * @private
  */
 /**
  * Calculate difference in brightness of two colors. Helper method for
  * goog.color.highContrast()
- * @param {Array.<number>} rgb1 Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
- * @param {Array.<number>} rgb2 Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb1 Color represented by a rgb array.
+ * @param {goog.color.Rgb} rgb2 Color represented by a rgb array.
  * @return {number} Brightness difference.
  * @private
  */
 /**
  * Calculate color difference between two colors. Helper method for
  * goog.color.highContrast()
- * @param {Array.<number>} rgb1 Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
- * @param {Array.<number>} rgb2 Color represented by a 3-element array with
- *     red, green, and blue values respectively, in the range [0, 255].
+ * @param {goog.color.Rgb} rgb1 Color represented by a rgb array.
+ * @param {goog.color.Rgb} rgb2 Color represented by a rgb array.
  * @return {number} Color difference.
  * @private
  */

File closure/closure-library/closure/goog/css/autocomplete.css

  */
 
 /*
- * Styles for goog.ui.AutoComplete and its derivatives.
+ * Styles for goog.ui.ac.AutoComplete and its derivatives.
  * Note: these styles need some work to get them working properly at various
  * font sizes other than the default.
  *

File closure/closure-library/closure/goog/css/css3button.css

                 https://bugs.webkit.org/show_bug.cgi?id=28152 is resolved. */
   background: -webkit-gradient(linear, 0% 40%, 0% 70%, from(#f9f9f9),
       to(#e3e3e3));
-  background: -moz-linear-gradient(top, #f9f9f9, #e3e3e3);
+  /* @alternate */ background: -moz-linear-gradient(top, #f9f9f9, #e3e3e3);
 }
 
 
   border-color: #444 !important;
   background: -webkit-gradient(linear, 0% 40%, 0% 70%, from(#e3e3e3),
       to(#f9f9f9));
-  background: -moz-linear-gradient(top, #e3e3e3, #f9f9f9);
+  /* @alternate */ background: -moz-linear-gradient(top, #e3e3e3, #f9f9f9);
 }
 
 .goog-css3-button-disabled {

File closure/closure-library/closure/goog/css/menubar.css

+/*
+ * 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.
+ */
+
+/*
+ * styling for goog.ui.menuBar and child buttons.
+ *
+ * @author tvykruta@google.com (Tomas Vykruta)
+ */
+
+
+.goog-menubar {
+  cursor: default;
+  outline: none;
+  position: relative;
+  white-space: nowrap;
+  background: #fff;
+}
+
+.goog-menubar .goog-menu-button {
+  padding: 1px 1px;
+  margin: 0px 0px;
+  outline: none;
+  border: none;
+  background: #fff;
+  /* @alternate */ border: 1px solid #fff;
+}
+
+.goog-menubar .goog-menu-button-dropdown {
+  display: none;
+}
+
+.goog-menubar .goog-menu-button-outer-box {
+  border: none;
+}
+
+.goog-menubar .goog-menu-button-inner-box {
+  border: none;
+}
+
+.goog-menubar .goog-menu-button-hover {
+  background: #eee;
+  border: 1px solid #eee;
+}
+
+.goog-menubar .goog-menu-button-open {
+  background: #fff;
+  border-left: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+}
+
+.goog-menubar .goog-menu-button-disabled {
+  color: #ccc;
+}

File closure/closure-library/closure/goog/cssom/iframe/style.js

   };
   // Text formatting property values, to keep text nodes directly under BODY
   // looking right.
-  for (i = 0, prop; prop = goog.cssom.iframe.style.textProperties_[i]; i++) {
+  for (i = 0; prop = goog.cssom.iframe.style.textProperties_[i]; i++) {
     bodyProperties[prop] = computedStyle[goog.string.toCamelCase(prop)];
   }
   if (opt_copyBackgroundContext &&

File closure/closure-library/closure/goog/datasource/datasource.js

 
 /**
  * Get the value of the node
+ * @param {...?} var_args Do not check arity of arguments, because
+ *     some subclasses require args.
  * @return {*} The value of the node, or null if no value.
  */
 goog.ds.DataNode.prototype.get = goog.abstractMethod;
 goog.ds.BaseDataNode.prototype.getDataPath = function() {
   var parentPath = '';
   var myName = this.getDataName();
-  if (this.getParent_ && this.getParent_()) {
-    parentPath = this.getParent_().getDataPath() +
+  if (this.getParent && this.getParent()) {
+    parentPath = this.getParent().getDataPath() +
         (myName.indexOf(goog.ds.STR_ARRAY_START) != -1 ? '' :
         goog.ds.STR_PATH_SEPARATOR);
   }
  * Gets the parent node. Subclasses implement this function
  * @type {Function}
  * @protected
- * @suppress {underscore}
  */
-goog.ds.BaseDataNode.prototype.getParent_ = null;
+goog.ds.BaseDataNode.prototype.getParent = null;
 
 
 /**
 /**
  * The character denoting an attribute.
  * @type {string}
- * @private
  */
-goog.ds.STR_ATTRIBUTE_START_ = '@';
+goog.ds.STR_ATTRIBUTE_START = '@';
 
 
 /**

File closure/closure-library/closure/goog/datasource/jsdatasource.js

 };
 
 
-/**
- * Get the parent node
- * @return {goog.ds.DataNode} The parent.
- * @protected
- * @suppress {underscore}
- */
-goog.ds.JsPropertyDataSource.prototype.getParent_ = function() {
+/** @override */
+goog.ds.JsPropertyDataSource.prototype.getParent = function() {
   return this.parentDataNode_;
 };

File closure/closure-library/closure/goog/datasource/xmldatasource.js

  * @override
  */
 goog.ds.XmlDataSource.prototype.getChildNode = function(name) {
-  if (goog.string.startsWith(name, goog.ds.STR_ATTRIBUTE_START_)) {
+  if (goog.string.startsWith(name, goog.ds.STR_ATTRIBUTE_START)) {
     var att = this.node_.getAttributeNode(name.substring(1));
     return att ? new goog.ds.XmlDataSource(att, this) : null;
   } else {
  * @override
  */
 goog.ds.XmlDataSource.prototype.getChildNodeValue = function(name) {
-  if (goog.string.startsWith(name, goog.ds.STR_ATTRIBUTE_START_)) {
+  if (goog.string.startsWith(name, goog.ds.STR_ATTRIBUTE_START)) {
     var node = this.node_.getAttributeNode(name.substring(1));
     return node ? node.nodeValue : null;
   } else {

File closure/closure-library/closure/goog/date/date.js

 /**
  * Overloaded toString method for object.
  * @return {string} ISO 8601 string representation of date.
+ * @override
  */
 goog.date.Date.prototype.toString = function() {
   return this.toIsoString();
 
 /**
  * @return {number} Value of wrapped date.
+ * @override
  */
 goog.date.Date.prototype.valueOf = function() {
   return this.date_.valueOf();
  * Returns the day of week according to universal time, US style.
  *
  * @return {goog.date.weekDay} Day of week, 0 = Sun, 1 = Mon, 6 = Sat.
+ * @override
  */
 goog.date.DateTime.prototype.getUTCDay = function() {
   return /** @type {goog.date.weekDay} */ (this.date_.getUTCDay());
  * Returns the hours part of the datetime according to universal time.
  *
  * @return {number} An integer between 0 and 23, representing the hour.
+ * @override
  */
 goog.date.DateTime.prototype.getUTCHours = function() {
   return this.date_.getUTCHours();
  * Returns the minutes part of the datetime according to universal time.
  *
  * @return {number} An integer between 0 and 59, representing the minutes.
+ * @override
  */
 goog.date.DateTime.prototype.getUTCMinutes = function() {
   return this.date_.getUTCMinutes();
  * Performs date calculation by adding the supplied interval to the date.
  *
  * @param {goog.date.Interval} interval Date interval to add.
+ * @override
  */
 goog.date.DateTime.prototype.add = function(interval) {
   goog.date.Date.prototype.add.call(this, interval);
  * @param {boolean=} opt_tz Whether the timezone offset should be included
  *     in the string.
  * @return {string} ISO 8601 string representation of date/time.
+ * @override
  */
 goog.date.DateTime.prototype.toIsoString = function(opt_verbose, opt_tz) {
   var dateString = goog.date.Date.prototype.toIsoString.call(this, opt_verbose);
  *     in the string.
  * @return {string} ISO 8601 string representation of date/time according to
  *     universal time.
+ * @override
  */
 goog.date.DateTime.prototype.toUTCIsoString = function(opt_verbose, opt_tz) {
   var dateStr = goog.date.Date.prototype.toUTCIsoString.call(this, opt_verbose);
 /**
  * Overloaded toString method for object.
  * @return {string} ISO 8601 string representation of date/time.
+ * @override
  */
 goog.date.DateTime.prototype.toString = function() {
   return this.toIsoString();
 
 /**
  * @return {!goog.date.DateTime} A clone of the datetime object.
+ * @override
  */
 goog.date.DateTime.prototype.clone = function() {
   var date = new goog.date.DateTime(this.date_);

File closure/closure-library/closure/goog/date/relative.js

           delta, future, goog.date.relative.Unit_.HOURS);
 
     } else {
-      // Timezone offset is in minutes.  We pass goog.now so that we can easily
-      // unit test this, the JSCompiler will optimize it away for us.
-      var offset = new Date(goog.now()).getTimezoneOffset() *
-          goog.date.relative.MINUTE_MS_;
+      // We can be more than 24 hours apart but still only 1 day apart, so we
+      // compare the closest time from today against the target time to find
+      // the number of days in the delta.
+      var midnight = new Date(goog.now());
+      midnight.setHours(0);
+      midnight.setMinutes(0);
+      midnight.setSeconds(0);
+      midnight.setMilliseconds(0);
 
       // Convert to days ago.
-      delta = Math.floor((now + offset) / goog.date.relative.DAY_MS_) -
-              Math.floor((dateMs + offset) / goog.date.relative.DAY_MS_);
+      delta = Math.ceil(
+          (midnight.getTime() - dateMs) / goog.date.relative.DAY_MS_);
 
       if (future) {
         delta *= -1;

File closure/closure-library/closure/goog/date/relative_test.html

     assertEquals('2 hours ago', fn(timestamp('23 March 2009 12:20:56')));
     assertEquals('23 hours ago', fn(timestamp('22 March 2009 15:30:56')));
     assertEquals('1 day ago', fn(timestamp('22 March 2009 12:11:04')));
+    assertEquals('1 day ago', fn(timestamp('22 March 2009 00:00:00')));
+    assertEquals('2 days ago', fn(timestamp('21 March 2009 23:59:59')));
     assertEquals('2 days ago', fn(timestamp('21 March 2009 10:30:56')));
+    assertEquals('2 days ago', fn(timestamp('21 March 2009 00:00:00')));
+    assertEquals('3 days ago', fn(timestamp('20 March 2009 23:59:59')));
   }
 
   function testFormatRelativeForFutureDates() {
     assertEquals('in 59 minutes', fn(timestamp('23 March 2009 15:29:15')));
     assertEquals('in 2 hours', fn(timestamp('23 March 2009 17:20:56')));
     assertEquals('in 23 hours', fn(timestamp('24 March 2009 13:30:56')));
+    assertEquals('in 1 day', fn(timestamp('24 March 2009 14:31:07')));
     assertEquals('in 1 day', fn(timestamp('24 March 2009 16:11:04')));
+    assertEquals('in 1 day', fn(timestamp('24 March 2009 23:59:59')));
+    assertEquals('in 2 days', fn(timestamp('25 March 2009 00:00:00')));
     assertEquals('in 2 days', fn(timestamp('25 March 2009 10:30:56')));
+    assertEquals('in 2 days', fn(timestamp('25 March 2009 23:59:59')));
+    assertEquals('in 3 days', fn(timestamp('26 March 2009 00:00:00')));
   }
 
 

File closure/closure-library/closure/goog/db/db.js

  * @fileoverview Wrappers for the HTML5 IndexedDB. The wrappers export nearly
  * the same interface as the standard API, but return goog.async.Deferred
  * objects instead of request objects and use Closure events. The wrapper works
- * and has been tested on Chrome version 14+. Though they should work in theory,
+ * and has been tested on Chrome version 18+. Though they should work in theory,
  * the wrapper tests fail in strange, non-deterministic ways on Firefox 6,
  * unfortunately.
  *

File closure/closure-library/closure/goog/db/db_test.html

 </head>
 <body>
 <script>
-// Chrome 14+ is the only browser confirmed to work. Firefox 6 does not.
+// Chrome 18+ is the only browser confirmed to work. Firefox 6 does not.
 var idbSupported = goog.userAgent.product.CHROME &&
-    goog.userAgent.product.isVersion("14");
+    goog.userAgent.product.isVersion("18");
 var asyncTestCase = goog.testing.AsyncTestCase.createAndInstall();
 var dbName = 'testDb';
 var globalDb = null;
 
   asyncTestCase.waitForAsync('get non-existent object store');
   globalDb.branch().addCallback(addStore).addCallback(function(db) {
-    var tx = db.createTransaction([]);
+    var tx = db.createTransaction(['store']);
     try {
       tx.objectStore('diediedie');
       fail('getting non-existent object store should have failed');
 
   asyncTestCase.waitForAsync('create transactions');
   globalDb.branch().addCallback(addStore).addCallback(function(db) {
-    var tx = db.createTransaction([]);
+    var tx = db.createTransaction(['store']);
     assertEquals(
         'mode not READ_ONLY',
         goog.db.Transaction.TransactionMode.READ_ONLY,
         tx.getMode());
     tx = db.createTransaction(
-        [],
+        ['store'],
         goog.db.Transaction.TransactionMode.READ_WRITE);
     assertEquals(
         'mode not READ_WRITE',
 
     tx.objectStore('store').put({key: 'dietodeath', value: NaN}).
       addErrback(function(err) {
-        assertEquals(goog.db.Error.ErrorCode.ABORT_ERR, err.code);
+        assertEquals(goog.db.Error.ErrorCode.DATA_ERR, err.code);
       });
 
     tx.objectStore('store').put({key: 'dietodeath', value: undefined}).
       addErrback(function(err) {
-        assertEquals(goog.db.Error.ErrorCode.ABORT_ERR, err.code);
+        assertEquals(goog.db.Error.ErrorCode.DATA_ERR, err.code);
       });
 
-    goog.events.listen(
-        tx,
-        goog.db.Transaction.EventTypes.COMPLETE,
-        function () {
-          fail('transaction should not have succeeded when putting illegal keys');
-        });
-    var errbacks = 0;
-    goog.events.listen(tx, goog.db.Transaction.EventTypes.ERROR, function(ev) {
-      if (errbacks < 2) {
-        // not all have been fired yet
-        errbacks++;
-      } else {
-        closeAndContinue(db);
-      }
-    });
+    closeAndContinue(db);
   }).addErrback(failOnError);
 }
 
         checkResultsTx.objectStore('store').getAll().addCallback(
             function(results) {
               assertEquals(0, results.length);
-            });
+            }).addErrback(failOnError);
 
         goog.events.listen(checkResultsTx, ERROR, failOnErrorEvent);
         goog.events.listen(checkResultsTx, COMPLETE, function() {
         ['store'],
         goog.db.Transaction.TransactionMode.READ_WRITE);
     var store = tx.objectStore('store');
+    var index = store.getIndex('index');
     store.put({key: 'something', value: 'anything'});
     goog.events.listen(tx, goog.db.Transaction.EventTypes.COMPLETE, function() {
-      // according to the specification, this should be a
-      // TRANSACTION_INACTIVE_ERR, but Chrome behaves incorrectly as of
-      // version 15.0.874.5
-      var expectedCode = goog.db.Error.ErrorCode.NOT_ALLOWED_ERR;
+      var expectedCode = goog.db.Error.ErrorCode.TRANSACTION_INACTIVE_ERR;
       store.put({
         key: 'another',
         value: 'thing'
       }).addErrback(function(err) {
         assertEquals(expectedCode, err.code);
       });
-      store.getIndex('index').get('anything').
+
+      index.get('anything').
         addCallback(function() {
           fail('getting from index with inactive transaction should have '
             + 'failed');
         }).addErrback(function(err) {
           assertEquals(expectedCode, err.code);
         });
-      store.getIndex('index').getKey('anything').
+      index.getKey('anything').
         addCallback(function() {
           fail('getting key from index with inactive transaction '
             + 'should have failed');
         }).addErrback(function(err) {
           assertEquals(expectedCode, err.code);
         });
-      store.getIndex('index').getAll('anything').
+      index.getAll('anything').
         addCallback(function() {
           fail('getting all from index with inactive transaction '
             + 'should have failed');
         }).addErrback(function(err) {
           assertEquals(expectedCode, err.code);
         });
-      store.getIndex('index').getAllKeys('anything').
+      index.getAllKeys('anything').
         addCallback(function() {
           fail('getting all keys from index with inactive transaction '
             + 'should have failed');
       return restartDatabase(db);
     });
   }).addCallback(function(db) {
-    var tx = db.createTransaction([]);
+    var tx = db.createTransaction(['store']);
     var store = tx.objectStore('store');
     try {
       var index = store.getIndex('index');

File closure/closure-library/closure/goog/db/error.js

   READ_ONLY_ERR: 9,
   TRANSIENT_ERR: 11,
   TIMEOUT_ERR: 10,
-  QUOTA_ERR: 11
+  QUOTA_ERR: 11,
+  INVALID_ACCESS_ERR: 12
 };
 
 
       goog.db.Error.DatabaseErrorCode_).TIMEOUT_ERR,
   QUOTA_ERR: (goog.global.IDBDatabaseException ||
       goog.global.webkitIDBDatabaseException ||
-      goog.db.Error.DatabaseErrorCode_).QUOTA_ERR
+      goog.db.Error.DatabaseErrorCode_).QUOTA_ERR,
+  INVALID_ACCESS_ERR: (goog.global.DOMException ||
+      goog.db.Error.DatabaseErrorCode_).INVALID_ACCESS_ERR
 };
 
 
       return 'Transaction timed out';
     case goog.db.Error.ErrorCode.QUOTA_ERR:
       return 'Database storage space quota exceeded';
+    case goog.db.Error.ErrorCode.INVALID_ACCESS_ERR:
+      return 'Invalid operation';
     default:
       return 'Unrecognized exception with code ' + code;
   }

File closure/closure-library/closure/goog/db/indexeddb.js

 /**
  * Creates a new transaction.
  *
- * @param {!Array.<string>=} opt_storeNames An array, DOMStringList or string
- *     that contains the transaction's scope, the object stores that this
- *     transaction can operate on. This parameter can be omitted or an empty
- *     list can be passed to allow the transaction scope to be all object
- *     stores.
+ * @param {!Array.<string>} storeNames A list of strings that contains the
+ *     transaction's scope, the object stores that this transaction can operate
+ *     on.
  * @param {goog.db.Transaction.TransactionMode=} opt_mode The mode of the
  *     transaction. If not present, the default is READ_ONLY. For VERSION_CHANGE
  *     transactions call {@link goog.db.IndexedDB#setVersion} instead.
  * @return {!goog.db.Transaction} The wrapper for the newly created transaction.
  * @throws {goog.db.Error} If there's a problem creating the transaction.
  */
-goog.db.IndexedDb.prototype.createTransaction = function(opt_storeNames,
-    opt_mode) {
-  var storeNames = opt_storeNames || [];
+goog.db.IndexedDb.prototype.createTransaction = function(storeNames, opt_mode) {
   try {
     return new goog.db.Transaction(this.db_.transaction(storeNames, opt_mode));
   } catch (err) {