http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/logrecordserializer.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/debug/logrecordserializer.js b/externs/GCL/externs/goog/debug/logrecordserializer.js new file mode 100644 index 0000000..9b09d56 --- /dev/null +++ b/externs/GCL/externs/goog/debug/logrecordserializer.js @@ -0,0 +1,121 @@ +// Copyright 2011 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Static methods for serializing and deserializing log + * messages. These methods are deliberately kept separate from logrecord.js + * and logger.js because they add dependencies on goog.json and goog.object. + * + */ + +goog.provide('goog.debug.logRecordSerializer'); + +goog.require('goog.debug.LogRecord'); +goog.require('goog.debug.Logger'); +goog.require('goog.json'); +goog.require('goog.object'); + + +/** + * Enumeration of object keys used when serializing a log message. + * @enum {string} + * @private + */ +goog.debug.logRecordSerializer.Param_ = { + TIME: 't', + LEVEL_NAME: 'ln', + LEVEL_VALUE: 'lv', + MSG: 'm', + LOGGER_NAME: 'n', + SEQUENCE_NUMBER: 's', + EXCEPTION: 'e' +}; + + +/** + * Serializes a LogRecord to a JSON string. Note that any associated + * exception is likely to be lost. + * @param {goog.debug.LogRecord} record The record to serialize. + * @return {string} Serialized JSON string of the log message. + */ +goog.debug.logRecordSerializer.serialize = function(record) { + var param = goog.debug.logRecordSerializer.Param_; + return goog.json.serialize(goog.object.create( + param.TIME, record.getMillis(), + param.LEVEL_NAME, record.getLevel().name, + param.LEVEL_VALUE, record.getLevel().value, + param.MSG, record.getMessage(), + param.LOGGER_NAME, record.getLoggerName(), + param.SEQUENCE_NUMBER, record.getSequenceNumber(), + param.EXCEPTION, record.getException() && record.getException().message)); +}; + + +/** + * Deserializes a JSON-serialized LogRecord. + * @param {string} s The JSON serialized record. + * @return {!goog.debug.LogRecord} The deserialized record. + */ +goog.debug.logRecordSerializer.parse = function(s) { + return goog.debug.logRecordSerializer.reconstitute_(goog.json.parse(s)); +}; + + +/** + * Deserializes a JSON-serialized LogRecord. Use this only if you're + * naive enough to blindly trust any JSON formatted input that comes + * your way. + * @param {string} s The JSON serialized record. + * @return {!goog.debug.LogRecord} The deserialized record. + */ +goog.debug.logRecordSerializer.unsafeParse = function(s) { + return goog.debug.logRecordSerializer.reconstitute_(goog.json.unsafeParse(s)); +}; + + +/** + * Common reconsitution method for for parse and unsafeParse. + * @param {Object} o The JSON object. + * @return {!goog.debug.LogRecord} The reconstituted record. + * @private + */ +goog.debug.logRecordSerializer.reconstitute_ = function(o) { + var param = goog.debug.logRecordSerializer.Param_; + var level = goog.debug.logRecordSerializer.getLevel_( + o[param.LEVEL_NAME], o[param.LEVEL_VALUE]); + + var ret = new goog.debug.LogRecord(level, o[param.MSG], + o[param.LOGGER_NAME], o[param.TIME], o[param.SEQUENCE_NUMBER]); + var exceptionMessage = o[param.EXCEPTION]; + if (goog.isDefAndNotNull(exceptionMessage)) { + ret.setException(new Error(exceptionMessage)); + } + return ret; +}; + + +/** + * @param {string} name The name of the log level to return. + * @param {number} value The numeric value of the log level to return. + * @return {!goog.debug.Logger.Level} Returns a goog.debug.Logger.Level with + * the specified name and value. If the name and value match a predefined + * log level, that instance will be returned, otherwise a new one will be + * created. + * @private + */ +goog.debug.logRecordSerializer.getLevel_ = function(name, value) { + var level = goog.debug.Logger.Level.getPredefinedLevel(name); + return level && level.value == value ? + level : new goog.debug.Logger.Level(name, value); +};
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/relativetimeprovider.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/debug/relativetimeprovider.js b/externs/GCL/externs/goog/debug/relativetimeprovider.js new file mode 100644 index 0000000..1201147 --- /dev/null +++ b/externs/GCL/externs/goog/debug/relativetimeprovider.js @@ -0,0 +1,84 @@ +// Copyright 2007 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Definition the goog.debug.RelativeTimeProvider class. + * + */ + +goog.provide('goog.debug.RelativeTimeProvider'); + + + +/** + * A simple object to keep track of a timestamp considered the start of + * something. The main use is for the logger system to maintain a start time + * that is occasionally reset. For example, in Gmail, we reset this relative + * time at the start of a user action so that timings are offset from the + * beginning of the action. This class also provides a singleton as the default + * behavior for most use cases is to share the same start time. + * + * @constructor + * @final + */ +goog.debug.RelativeTimeProvider = function() { + /** + * The start time. + * @type {number} + * @private + */ + this.relativeTimeStart_ = goog.now(); +}; + + +/** + * Default instance. + * @type {goog.debug.RelativeTimeProvider} + * @private + */ +goog.debug.RelativeTimeProvider.defaultInstance_ = + new goog.debug.RelativeTimeProvider(); + + +/** + * Sets the start time to the specified time. + * @param {number} timeStamp The start time. + */ +goog.debug.RelativeTimeProvider.prototype.set = function(timeStamp) { + this.relativeTimeStart_ = timeStamp; +}; + + +/** + * Resets the start time to now. + */ +goog.debug.RelativeTimeProvider.prototype.reset = function() { + this.set(goog.now()); +}; + + +/** + * @return {number} The start time. + */ +goog.debug.RelativeTimeProvider.prototype.get = function() { + return this.relativeTimeStart_; +}; + + +/** + * @return {goog.debug.RelativeTimeProvider} The default instance. + */ +goog.debug.RelativeTimeProvider.getDefaultInstance = function() { + return goog.debug.RelativeTimeProvider.defaultInstance_; +}; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/tracer.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/debug/tracer.js b/externs/GCL/externs/goog/debug/tracer.js new file mode 100644 index 0000000..b56a324 --- /dev/null +++ b/externs/GCL/externs/goog/debug/tracer.js @@ -0,0 +1,725 @@ +// Copyright 2006 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Definition of the Tracer class and associated classes. + * + * @see ../demos/tracer.html + */ + +goog.provide('goog.debug.Trace'); + +goog.require('goog.array'); +goog.require('goog.debug.Logger'); +goog.require('goog.iter'); +goog.require('goog.log'); +goog.require('goog.structs.Map'); +goog.require('goog.structs.SimplePool'); + + + +/** + * Class used for singleton goog.debug.Trace. Used for timing slow points in + * the code. Based on the java Tracer class but optimized for javascript. + * See com.google.common.tracing.Tracer. + * @constructor + * @private + */ +goog.debug.Trace_ = function() { + + /** + * Events in order. + * @type {Array<goog.debug.Trace_.Event_>} + * @private + */ + this.events_ = []; + + /** + * Outstanding events that have started but haven't yet ended. The keys are + * numeric ids and the values are goog.debug.Trace_.Event_ objects. + * @type {goog.structs.Map} + * @private + */ + this.outstandingEvents_ = new goog.structs.Map(); + + /** + * Start time of the event trace + * @type {number} + * @private + */ + this.startTime_ = 0; + + /** + * Cummulative overhead of calls to startTracer + * @type {number} + * @private + */ + this.tracerOverheadStart_ = 0; + + /** + * Cummulative overhead of calls to endTracer + * @type {number} + * @private + */ + this.tracerOverheadEnd_ = 0; + + /** + * Cummulative overhead of calls to addComment + * @type {number} + * @private + */ + this.tracerOverheadComment_ = 0; + + /** + * Keeps stats on different types of tracers. The keys are strings and the + * values are goog.debug.Stat + * @type {goog.structs.Map} + * @private + */ + this.stats_ = new goog.structs.Map(); + + /** + * Total number of traces created in the trace. + * @type {number} + * @private + */ + this.tracerCount_ = 0; + + /** + * Total number of comments created in the trace. + * @type {number} + * @private + */ + this.commentCount_ = 0; + + /** + * Next id to use for the trace. + * @type {number} + * @private + */ + this.nextId_ = 1; + + /** + * A pool for goog.debug.Trace_.Event_ objects so we don't keep creating and + * garbage collecting these (which is very expensive in IE6). + * @private {!goog.structs.SimplePool} + */ + this.eventPool_ = new goog.structs.SimplePool(0, 4000); + this.eventPool_.createObject = function() { + return new goog.debug.Trace_.Event_(); + }; + + + /** + * A pool for goog.debug.Trace_.Stat_ objects so we don't keep creating and + * garbage collecting these (which is very expensive in IE6). + * @private {!goog.structs.SimplePool} + */ + this.statPool_ = new goog.structs.SimplePool(0, 50); + this.statPool_.createObject = function() { + return new goog.debug.Trace_.Stat_(); + }; + + var self = this; + + /** @private {!goog.structs.SimplePool} */ + this.idPool_ = new goog.structs.SimplePool(0, 2000); + + // TODO(nicksantos): SimplePool is supposed to only return objects. + // Reconcile this so that we don't have to cast to number below. + this.idPool_.createObject = function() { + return String(self.nextId_++); + }; + this.idPool_.disposeObject = function(obj) {}; + + /** + * Default threshold below which a tracer shouldn't be reported + * @type {number} + * @private + */ + this.defaultThreshold_ = 3; +}; + + +/** + * Logger for the tracer + * @type {goog.log.Logger} + * @private + */ +goog.debug.Trace_.prototype.logger_ = + goog.log.getLogger('goog.debug.Trace'); + + +/** + * Maximum size of the trace before we discard events + * @type {number} + */ +goog.debug.Trace_.prototype.MAX_TRACE_SIZE = 1000; + + +/** + * Event type supported by tracer + * @enum {number} + */ +goog.debug.Trace_.EventType = { + /** + * Start event type + */ + START: 0, + + /** + * Stop event type + */ + STOP: 1, + + /** + * Comment event type + */ + COMMENT: 2 +}; + + + +/** + * Class to keep track of a stat of a single tracer type. Stores the count + * and cumulative time. + * @constructor + * @private + */ +goog.debug.Trace_.Stat_ = function() { + /** + * Number of tracers + * @type {number} + */ + this.count = 0; + + /** + * Cumulative time of traces + * @type {number} + */ + this.time = 0; + + /** + * Total number of allocations for this tracer type + * @type {number} + */ + this.varAlloc = 0; +}; + + +/** + * @type {string|null|undefined} + */ +goog.debug.Trace_.Stat_.prototype.type; + + +/** + * @return {string} A string describing the tracer stat. + * @override + */ +goog.debug.Trace_.Stat_.prototype.toString = function() { + var sb = []; + sb.push(this.type, ' ', this.count, ' (', Math.round(this.time * 10) / 10, + ' ms)'); + if (this.varAlloc) { + sb.push(' [VarAlloc = ', this.varAlloc, ']'); + } + return sb.join(''); +}; + + + +/** + * Private class used to encapsulate a single event, either the start or stop + * of a tracer. + * @constructor + * @private + */ +goog.debug.Trace_.Event_ = function() { + // the fields are different for different events - see usage in code +}; + + +/** + * @type {string|null|undefined} + */ +goog.debug.Trace_.Event_.prototype.type; + + +/** + * Returns a formatted string for the event. + * @param {number} startTime The start time of the trace to generate relative + * times. + * @param {number} prevTime The completion time of the previous event or -1. + * @param {string} indent Extra indent for the message + * if there was no previous event. + * @return {string} The formatted tracer string. + */ +goog.debug.Trace_.Event_.prototype.toTraceString = function(startTime, prevTime, + indent) { + var sb = []; + + if (prevTime == -1) { + sb.push(' '); + } else { + sb.push(goog.debug.Trace_.longToPaddedString_(this.eventTime - prevTime)); + } + + sb.push(' ', goog.debug.Trace_.formatTime_(this.eventTime - startTime)); + if (this.eventType == goog.debug.Trace_.EventType.START) { + sb.push(' Start '); + } else if (this.eventType == goog.debug.Trace_.EventType.STOP) { + sb.push(' Done '); + var delta = this.stopTime - this.startTime; + sb.push(goog.debug.Trace_.longToPaddedString_(delta), ' ms '); + } else { + sb.push(' Comment '); + } + + sb.push(indent, this); + if (this.totalVarAlloc > 0) { + sb.push('[VarAlloc ', this.totalVarAlloc, '] '); + } + return sb.join(''); +}; + + +/** + * @return {string} A string describing the tracer event. + * @override + */ +goog.debug.Trace_.Event_.prototype.toString = function() { + if (this.type == null) { + return this.comment; + } else { + return '[' + this.type + '] ' + this.comment; + } +}; + + +/** + * Add the ability to explicitly set the start time. This is useful for example + * for measuring initial load time where you can set a variable as soon as the + * main page of the app is loaded and then later call this function when the + * Tracer code has been loaded. + * @param {number} startTime The start time to set. + */ +goog.debug.Trace_.prototype.setStartTime = function(startTime) { + this.startTime_ = startTime; +}; + + +/** + * Initializes and resets the current trace + * @param {number} defaultThreshold The default threshold below which the + * tracer output will be supressed. Can be overridden on a per-Tracer basis. + */ +goog.debug.Trace_.prototype.initCurrentTrace = function(defaultThreshold) { + this.reset(defaultThreshold); +}; + + +/** + * Clears the current trace + */ +goog.debug.Trace_.prototype.clearCurrentTrace = function() { + this.reset(0); +}; + + +/** + * Resets the trace. + * @param {number} defaultThreshold The default threshold below which the + * tracer output will be supressed. Can be overridden on a per-Tracer basis. + */ +goog.debug.Trace_.prototype.reset = function(defaultThreshold) { + this.defaultThreshold_ = defaultThreshold; + + for (var i = 0; i < this.events_.length; i++) { + var id = /** @type {Object} */ (this.eventPool_).id; + if (id) { + this.idPool_.releaseObject(id); + } + this.eventPool_.releaseObject(this.events_[i]); + } + + this.events_.length = 0; + this.outstandingEvents_.clear(); + this.startTime_ = goog.debug.Trace_.now(); + this.tracerOverheadStart_ = 0; + this.tracerOverheadEnd_ = 0; + this.tracerOverheadComment_ = 0; + this.tracerCount_ = 0; + this.commentCount_ = 0; + + var keys = this.stats_.getKeys(); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var stat = this.stats_.get(key); + stat.count = 0; + stat.time = 0; + stat.varAlloc = 0; + this.statPool_.releaseObject(/** @type {Object} */ (stat)); + } + this.stats_.clear(); +}; + + +/** + * Starts a tracer + * @param {string} comment A comment used to identify the tracer. Does not + * need to be unique. + * @param {string=} opt_type Type used to identify the tracer. If a Trace is + * given a type (the first argument to the constructor) and multiple Traces + * are done on that type then a "TOTAL line will be produced showing the + * total number of traces and the sum of the time + * ("TOTAL Database 2 (37 ms)" in our example). These traces should be + * mutually exclusive or else the sum won't make sense (the time will + * be double counted if the second starts before the first ends). + * @return {number} The identifier for the tracer that should be passed to the + * the stopTracer method. + */ +goog.debug.Trace_.prototype.startTracer = function(comment, opt_type) { + var tracerStartTime = goog.debug.Trace_.now(); + var varAlloc = this.getTotalVarAlloc(); + var outstandingEventCount = this.outstandingEvents_.getCount(); + if (this.events_.length + outstandingEventCount > this.MAX_TRACE_SIZE) { + goog.log.warning(this.logger_, + 'Giant thread trace. Clearing to avoid memory leak.'); + // This is the more likely case. This usually means that we + // either forgot to clear the trace or else we are performing a + // very large number of events + if (this.events_.length > this.MAX_TRACE_SIZE / 2) { + for (var i = 0; i < this.events_.length; i++) { + var event = this.events_[i]; + if (event.id) { + this.idPool_.releaseObject(event.id); + } + this.eventPool_.releaseObject(event); + } + this.events_.length = 0; + } + + // This is less likely and probably indicates that a lot of traces + // aren't being closed. We want to avoid unnecessarily clearing + // this though in case the events do eventually finish. + if (outstandingEventCount > this.MAX_TRACE_SIZE / 2) { + this.outstandingEvents_.clear(); + } + } + + goog.debug.Logger.logToProfilers('Start : ' + comment); + + var event = /** @type {goog.debug.Trace_.Event_} */ ( + this.eventPool_.getObject()); + event.totalVarAlloc = varAlloc; + event.eventType = goog.debug.Trace_.EventType.START; + event.id = Number(this.idPool_.getObject()); + event.comment = comment; + event.type = opt_type; + this.events_.push(event); + this.outstandingEvents_.set(String(event.id), event); + this.tracerCount_++; + var now = goog.debug.Trace_.now(); + event.startTime = event.eventTime = now; + this.tracerOverheadStart_ += now - tracerStartTime; + return event.id; +}; + + +/** + * Stops a tracer + * @param {number|undefined|null} id The id of the tracer that is ending. + * @param {number=} opt_silenceThreshold Threshold below which the tracer is + * silenced. + * @return {?number} The elapsed time for the tracer or null if the tracer + * identitifer was not recognized. + */ +goog.debug.Trace_.prototype.stopTracer = function(id, opt_silenceThreshold) { + // this used to call goog.isDef(opt_silenceThreshold) but that causes an + // object allocation in IE for some reason (doh!). The following code doesn't + // cause an allocation + var now = goog.debug.Trace_.now(); + var silenceThreshold; + if (opt_silenceThreshold === 0) { + silenceThreshold = 0; + } else if (opt_silenceThreshold) { + silenceThreshold = opt_silenceThreshold; + } else { + silenceThreshold = this.defaultThreshold_; + } + + var startEvent = this.outstandingEvents_.get(String(id)); + if (startEvent == null) { + return null; + } + + this.outstandingEvents_.remove(String(id)); + + var stopEvent; + var elapsed = now - startEvent.startTime; + if (elapsed < silenceThreshold) { + var count = this.events_.length; + for (var i = count - 1; i >= 0; i--) { + var nextEvent = this.events_[i]; + if (nextEvent == startEvent) { + this.events_.splice(i, 1); + this.idPool_.releaseObject(startEvent.id); + this.eventPool_.releaseObject(/** @type {Object} */ (startEvent)); + break; + } + } + + } else { + stopEvent = /** @type {goog.debug.Trace_.Event_} */ ( + this.eventPool_.getObject()); + stopEvent.eventType = goog.debug.Trace_.EventType.STOP; + stopEvent.startTime = startEvent.startTime; + stopEvent.comment = startEvent.comment; + stopEvent.type = startEvent.type; + stopEvent.stopTime = stopEvent.eventTime = now; + + this.events_.push(stopEvent); + } + + var type = startEvent.type; + var stat = null; + if (type) { + stat = this.getStat_(type); + stat.count++; + stat.time += elapsed; + } + if (stopEvent) { + goog.debug.Logger.logToProfilers('Stop : ' + stopEvent.comment); + + stopEvent.totalVarAlloc = this.getTotalVarAlloc(); + + if (stat) { + stat.varAlloc += (stopEvent.totalVarAlloc - startEvent.totalVarAlloc); + } + } + var tracerFinishTime = goog.debug.Trace_.now(); + this.tracerOverheadEnd_ += tracerFinishTime - now; + return elapsed; +}; + + +/** + * Sets the ActiveX object that can be used to get GC tracing in IE6. + * @param {Object} gcTracer GCTracer ActiveX object. + */ +goog.debug.Trace_.prototype.setGcTracer = function(gcTracer) { + this.gcTracer_ = gcTracer; +}; + + +/** + * Returns the total number of allocations since the GC stats were reset. Only + * works in IE. + * @return {number} The number of allocaitons or -1 if not supported. + */ +goog.debug.Trace_.prototype.getTotalVarAlloc = function() { + var gcTracer = this.gcTracer_; + // isTracing is defined on the ActiveX object. + if (gcTracer && gcTracer['isTracing']()) { + return gcTracer['totalVarAlloc']; + } + return -1; +}; + + +/** + * Adds a comment to the trace. Makes it possible to see when a specific event + * happened in relation to the traces. + * @param {string} comment A comment that is inserted into the trace. + * @param {?string=} opt_type Type used to identify the tracer. If a comment is + * given a type and multiple comments are done on that type then a "TOTAL + * line will be produced showing the total number of comments of that type. + * @param {?number=} opt_timeStamp The timestamp to insert the comment. If not + * specified, the current time wil be used. + */ +goog.debug.Trace_.prototype.addComment = function(comment, opt_type, + opt_timeStamp) { + var now = goog.debug.Trace_.now(); + var timeStamp = opt_timeStamp ? opt_timeStamp : now; + + var eventComment = /** @type {goog.debug.Trace_.Event_} */ ( + this.eventPool_.getObject()); + eventComment.eventType = goog.debug.Trace_.EventType.COMMENT; + eventComment.eventTime = timeStamp; + eventComment.type = opt_type; + eventComment.comment = comment; + eventComment.totalVarAlloc = this.getTotalVarAlloc(); + this.commentCount_++; + + if (opt_timeStamp) { + var numEvents = this.events_.length; + for (var i = 0; i < numEvents; i++) { + var event = this.events_[i]; + var eventTime = event.eventTime; + + if (eventTime > timeStamp) { + goog.array.insertAt(this.events_, eventComment, i); + break; + } + } + if (i == numEvents) { + this.events_.push(eventComment); + } + } else { + this.events_.push(eventComment); + } + + var type = eventComment.type; + if (type) { + var stat = this.getStat_(type); + stat.count++; + } + + this.tracerOverheadComment_ += goog.debug.Trace_.now() - now; +}; + + +/** + * Gets a stat object for a particular type. The stat object is created if it + * hasn't yet been. + * @param {string} type The type of stat. + * @return {goog.debug.Trace_.Stat_} The stat object. + * @private + */ +goog.debug.Trace_.prototype.getStat_ = function(type) { + var stat = this.stats_.get(type); + if (!stat) { + stat = /** @type {goog.debug.Trace_.Event_} */ ( + this.statPool_.getObject()); + stat.type = type; + this.stats_.set(type, stat); + } + return /** @type {goog.debug.Trace_.Stat_} */(stat); +}; + + +/** + * Returns a formatted string for the current trace + * @return {string} A formatted string that shows the timings of the current + * trace. + */ +goog.debug.Trace_.prototype.getFormattedTrace = function() { + return this.toString(); +}; + + +/** + * Returns a formatted string that describes the thread trace. + * @return {string} A formatted string. + * @override + */ +goog.debug.Trace_.prototype.toString = function() { + var sb = []; + var etime = -1; + var indent = []; + for (var i = 0; i < this.events_.length; i++) { + var e = this.events_[i]; + if (e.eventType == goog.debug.Trace_.EventType.STOP) { + indent.pop(); + } + sb.push(' ', e.toTraceString(this.startTime_, etime, indent.join(''))); + etime = e.eventTime; + sb.push('\n'); + if (e.eventType == goog.debug.Trace_.EventType.START) { + indent.push('| '); + } + } + + if (this.outstandingEvents_.getCount() != 0) { + var now = goog.debug.Trace_.now(); + + sb.push(' Unstopped timers:\n'); + goog.iter.forEach(this.outstandingEvents_, function(startEvent) { + sb.push(' ', startEvent, ' (', now - startEvent.startTime, + ' ms, started at ', + goog.debug.Trace_.formatTime_(startEvent.startTime), + ')\n'); + }); + } + + var statKeys = this.stats_.getKeys(); + for (var i = 0; i < statKeys.length; i++) { + var stat = this.stats_.get(statKeys[i]); + if (stat.count > 1) { + sb.push(' TOTAL ', stat, '\n'); + } + } + + sb.push('Total tracers created ', this.tracerCount_, '\n', + 'Total comments created ', this.commentCount_, '\n', + 'Overhead start: ', this.tracerOverheadStart_, ' ms\n', + 'Overhead end: ', this.tracerOverheadEnd_, ' ms\n', + 'Overhead comment: ', this.tracerOverheadComment_, ' ms\n'); + + return sb.join(''); +}; + + +/** + * Converts 'v' to a string and pads it with up to 3 spaces for + * improved alignment. TODO there must be a better way + * @param {number} v A number. + * @return {string} A padded string. + * @private + */ +goog.debug.Trace_.longToPaddedString_ = function(v) { + v = Math.round(v); + // todo (pupius) - there should be a generic string in goog.string for this + var space = ''; + if (v < 1000) space = ' '; + if (v < 100) space = ' '; + if (v < 10) space = ' '; + return space + v; +}; + + +/** + * Return the sec.ms part of time (if time = "20:06:11.566", "11.566 + * @param {number} time The time in MS. + * @return {string} A formatted string as sec.ms'. + * @private + */ +goog.debug.Trace_.formatTime_ = function(time) { + time = Math.round(time); + var sec = (time / 1000) % 60; + var ms = time % 1000; + + // TODO their must be a nicer way to get zero padded integers + return String(100 + sec).substring(1, 3) + '.' + + String(1000 + ms).substring(1, 4); +}; + + +/** + * Returns the current time. Done through a wrapper function so it can be + * overridden by application code. Gmail has an ActiveX extension that provides + * higher precision timing info. + * @return {number} The current time in milliseconds. + */ +goog.debug.Trace_.now = function() { + return goog.now(); +}; + + +/** + * Singleton trace object + * @type {goog.debug.Trace_} + */ +goog.debug.Trace = new goog.debug.Trace_(); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/autocompleteremotedata.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/autocompleteremotedata.js b/externs/GCL/externs/goog/demos/autocompleteremotedata.js new file mode 100644 index 0000000..ff55f67 --- /dev/null +++ b/externs/GCL/externs/goog/demos/autocompleteremotedata.js @@ -0,0 +1,18 @@ +// Copyright 2010 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** @nocompile */ + +['Big Table', 'Googlebot', 'Instant Indexing', 'Mustang', 'Page Rank', + 'Proto Buffer'] http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/autocompleterichremotedata.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/autocompleterichremotedata.js b/externs/GCL/externs/goog/demos/autocompleterichremotedata.js new file mode 100644 index 0000000..0fad7db --- /dev/null +++ b/externs/GCL/externs/goog/demos/autocompleterichremotedata.js @@ -0,0 +1,33 @@ +// Copyright 2010 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** @nocompile */ + +[ + ['apple', + {name: 'Fuji', url: 'http://www.google.com/images?q=fuji+apple'}, + {name: 'Gala', url: 'http://www.google.com/images?q=gala+apple'}, + {name: 'Golden Delicious', + url: 'http://www.google.com/images?q=golden delicious+apple'} + ], + ['citrus', + {name: 'Lemon', url: 'http://www.google.com/images?q=lemon+fruit'}, + {name: 'Orange', url: 'http://www.google.com/images?q=orange+fruit'} + ], + ['berry', + {name: 'Strawberry', url: 'http://www.google.com/images?q=strawberry+fruit'}, + {name: 'Blueberry', url: 'http://www.google.com/images?q=blueberry+fruit'}, + {name: 'Blackberry', url: 'http://www.google.com/images?q=blackberry+fruit'} + ] +] http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/demo.css ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/css/demo.css b/externs/GCL/externs/goog/demos/css/demo.css new file mode 100644 index 0000000..6eb82e8 --- /dev/null +++ b/externs/GCL/externs/goog/demos/css/demo.css @@ -0,0 +1,75 @@ +/* + * Copyright 2007 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. + */ + +/* Author: [email protected] (Attila Bodis) */ + + +@import url(../../css/common.css); + + +body { + background-color: #ffe; + font: normal 10pt Arial, sans-serif; +} + + +/* Misc. styles used for logging and debugging. */ +fieldset { + padding: 4px 8px; + margin-bottom: 1em; +} + +fieldset legend { + font-weight: bold; + color: #036; +} + +label, input { + vertical-align: middle; +} + +.hint { + font-size: 90%; + color: #369; +} + +.goog-debug-panel { + border: 1px solid #369; +} + +.goog-debug-panel .logdiv { + position: relative; + width: 100%; + height: 8em; + overflow: scroll; + overflow-x: hidden; + overflow-y: scroll; +} + +.goog-debug-panel .logdiv .logmsg { + font: normal 10px "Lucida Sans Typewriter", "Courier New", Courier, fixed; +} + +.perf { + margin: 0; + border: 0; + padding: 4px; + font: italic 95% Arial, sans-serif; + color: #999; +} + +#perf { + position: absolute; + right: 0; + bottom: 0; + text-align: right; + margin: 0; + border: 0; + padding: 4px; + font: italic 95% Arial, sans-serif; + color: #999; +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/emojipicker.css ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/css/emojipicker.css b/externs/GCL/externs/goog/demos/css/emojipicker.css new file mode 100644 index 0000000..826d5bd --- /dev/null +++ b/externs/GCL/externs/goog/demos/css/emojipicker.css @@ -0,0 +1,36 @@ +/* + * Copyright 2007 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. + */ + +/* Author: [email protected] (Darren Lewis) */ + +/* Styles used in the emojipicker demo */ +.goog-ui-popupemojipicker { + position: absolute; + -moz-outline: 0; + outline: 0; + visibility: hidden; +} + +.goog-palette-cell { + padding: 2px; + background: white; +} + +.goog-palette-cell div { + vertical-align: middle; + text-align: center; + margin: auto; +} + +.goog-palette-cell-wrapper { + width: 25px; + height: 25px; +} + +.goog-palette-cell-hover { + background: lightblue; +} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/emojisprite.css ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/css/emojisprite.css b/externs/GCL/externs/goog/demos/css/emojisprite.css new file mode 100644 index 0000000..fe1a2cc --- /dev/null +++ b/externs/GCL/externs/goog/demos/css/emojisprite.css @@ -0,0 +1,92 @@ +/* + * Copyright 2010 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. + */ + +/* This file is autogenerated. To regenerate, do: +cd google3/javascript/closure/demos/emoji +/home/build/static/projects/sitespeed optisprite *.gif + +This will generate an optimal sprite in /usr/local/google/tmp/bestsprite.tar.gz. + +Rename the optimal sprite to "sprite.png" (from sprite_XX.png), rename the css +to "sprite.css" (from sprite_XX.css), then change all the URLs in sprite.css to +point to sprite.png in google3/javascript/closure/demos/emoji, and cp the +sprite.png into that directory. +*/ + +.SPRITE_200{background:no-repeat url(../emoji/sprite.png) -18px 0;width:18px;height:18px} +.SPRITE_201{background:no-repeat url(../emoji/sprite.png) 0 -234px;width:18px;height:18px} +.SPRITE_202{background:no-repeat url(../emoji/sprite.png) -18px -338px;width:18px;height:18px} +.SPRITE_203{background:no-repeat url(../emoji/sprite.png) -36px 0;width:18px;height:18px} +.SPRITE_204{background:no-repeat url(../emoji/sprite.png) 0 -305px;width:18px;height:19px} +.SPRITE_205{background:no-repeat url(../emoji/sprite.png) -36px -126px;width:18px;height:18px} +.SPRITE_206{background:no-repeat url(../emoji/sprite.png) -36px -36px;width:18px;height:18px} +.SPRITE_2BC{background:no-repeat url(../emoji/sprite.png) -18px -144px;width:18px;height:18px} +.SPRITE_2BD{background:no-repeat url(../emoji/sprite.png) 0 -18px;width:18px;height:18px} +.SPRITE_2BE{background:no-repeat url(../emoji/sprite.png) -36px -54px;width:18px;height:18px} +.SPRITE_2BF{background:no-repeat url(../emoji/sprite.png) 0 -126px;width:18px;height:18px} +.SPRITE_2C0{background:no-repeat url(../emoji/sprite.png) -18px -305px;width:18px;height:18px} +.SPRITE_2C1{background:no-repeat url(../emoji/sprite.png) 0 -287px;width:18px;height:18px} +.SPRITE_2C2{background:no-repeat url(../emoji/sprite.png) -18px -126px;width:18px;height:18px} +.SPRITE_2C3{background:no-repeat url(../emoji/sprite.png) -36px -234px;width:18px;height:20px} +.SPRITE_2C4{background:no-repeat url(../emoji/sprite.png) -36px -72px;width:18px;height:18px} +.SPRITE_2C5{background:no-repeat url(../emoji/sprite.png) -54px -54px;width:18px;height:18px} +.SPRITE_2C6{background:no-repeat url(../emoji/sprite.png) 0 -72px;width:18px;height:18px} +.SPRITE_2C7{background:no-repeat url(../emoji/sprite.png) -18px -180px;width:18px;height:18px} +.SPRITE_2C8{background:no-repeat url(../emoji/sprite.png) -36px -198px;width:18px;height:18px} +.SPRITE_2C9{background:no-repeat url(../emoji/sprite.png) -36px -287px;width:18px;height:18px} +.SPRITE_2CB{background:no-repeat url(../emoji/sprite.png) -54px -252px;width:18px;height:18px} +.SPRITE_2CC{background:no-repeat url(../emoji/sprite.png) -54px -288px;width:18px;height:16px} +.SPRITE_2CD{background:no-repeat url(../emoji/sprite.png) -36px -162px;width:18px;height:18px} +.SPRITE_2CE{background:no-repeat url(../emoji/sprite.png) 0 -269px;width:18px;height:18px} +.SPRITE_2CF{background:no-repeat url(../emoji/sprite.png) -36px -108px;width:18px;height:18px} +.SPRITE_2D0{background:no-repeat url(../emoji/sprite.png) -36px -338px;width:18px;height:18px} +.SPRITE_2D1{background:no-repeat url(../emoji/sprite.png) 0 -338px;width:18px;height:18px} +.SPRITE_2D2{background:no-repeat url(../emoji/sprite.png) -54px -36px;width:18px;height:16px} +.SPRITE_2D3{background:no-repeat url(../emoji/sprite.png) -36px -305px;width:18px;height:18px} +.SPRITE_2D4{background:no-repeat url(../emoji/sprite.png) -36px -18px;width:18px;height:18px} +.SPRITE_2D5{background:no-repeat url(../emoji/sprite.png) -18px -108px;width:18px;height:18px} +.SPRITE_2D6{background:no-repeat url(../emoji/sprite.png) -36px -144px;width:18px;height:18px} +.SPRITE_2D7{background:no-repeat url(../emoji/sprite.png) 0 -36px;width:18px;height:18px} +.SPRITE_2D8{background:no-repeat url(../emoji/sprite.png) -54px -126px;width:18px;height:18px} +.SPRITE_2D9{background:no-repeat url(../emoji/sprite.png) -18px -287px;width:18px;height:18px} +.SPRITE_2DA{background:no-repeat url(../emoji/sprite.png) -54px -216px;width:18px;height:18px} +.SPRITE_2DB{background:no-repeat url(../emoji/sprite.png) -36px -180px;width:18px;height:18px} +.SPRITE_2DC{background:no-repeat url(../emoji/sprite.png) 0 -54px;width:18px;height:18px} +.SPRITE_2DD{background:no-repeat url(../emoji/sprite.png) -18px -72px;width:18px;height:18px} +.SPRITE_2DE{background:no-repeat url(../emoji/sprite.png) -36px -90px;width:18px;height:18px} +.SPRITE_2DF{background:no-repeat url(../emoji/sprite.png) -54px -108px;width:18px;height:18px} +.SPRITE_2E0{background:no-repeat url(../emoji/sprite.png) -18px -198px;width:18px;height:18px} +.SPRITE_2E1{background:no-repeat url(../emoji/sprite.png) 0 -180px;width:18px;height:18px} +.SPRITE_2E2{background:no-repeat url(../emoji/sprite.png) -54px -338px;width:18px;height:18px} +.SPRITE_2E4{background:no-repeat url(../emoji/sprite.png) -54px -198px;width:18px;height:18px} +.SPRITE_2E5{background:no-repeat url(../emoji/sprite.png) 0 -162px;width:18px;height:18px} +.SPRITE_2E6{background:no-repeat url(../emoji/sprite.png) -54px -270px;width:18px;height:18px} +.SPRITE_2E7{background:no-repeat url(../emoji/sprite.png) 0 -108px;width:18px;height:18px} +.SPRITE_2E8{background:no-repeat url(../emoji/sprite.png) 0 -198px;width:18px;height:18px} +.SPRITE_2E9{background:no-repeat url(../emoji/sprite.png) -54px 0;width:18px;height:18px} +.SPRITE_2EA{background:no-repeat url(../emoji/sprite.png) -54px -144px;width:18px;height:18px} +.SPRITE_2EB{background:no-repeat url(../emoji/sprite.png) -18px -36px;width:18px;height:18px} +.SPRITE_2EC{background:no-repeat url(../emoji/sprite.png) -18px -18px;width:18px;height:18px} +.SPRITE_2ED{background:no-repeat url(../emoji/sprite.png) -36px -269px;width:18px;height:18px} +.SPRITE_2EE{background:no-repeat url(../emoji/sprite.png) -18px -90px;width:18px;height:18px} +.SPRITE_2F0{background:no-repeat url(../emoji/sprite.png) 0 0;width:18px;height:18px} +.SPRITE_2F2{background:no-repeat url(../emoji/sprite.png) -54px -234px;width:18px;height:18px} +.SPRITE_2F3{background:no-repeat url(../emoji/sprite.png) 0 -144px;width:18px;height:18px} +.SPRITE_2F4{background:no-repeat url(../emoji/sprite.png) 0 -252px;width:18px;height:17px} +.SPRITE_2F5{background:no-repeat url(../emoji/sprite.png) -54px -321px;width:18px;height:14px} +.SPRITE_2F6{background:no-repeat url(../emoji/sprite.png) -36px -254px;width:18px;height:15px} +.SPRITE_2F7{background:no-repeat url(../emoji/sprite.png) -18px -54px;width:18px;height:18px} +.SPRITE_2F8{background:no-repeat url(../emoji/sprite.png) 0 -216px;width:18px;height:18px} +.SPRITE_2F9{background:no-repeat url(../emoji/sprite.png) -18px -234px;width:18px;height:18px} +.SPRITE_2FA{background:no-repeat url(../emoji/sprite.png) -18px -216px;width:18px;height:18px} +.SPRITE_2FB{background:no-repeat url(../emoji/sprite.png) -36px -216px;width:18px;height:18px} +.SPRITE_2FC{background:no-repeat url(../emoji/sprite.png) -54px -162px;width:18px;height:18px} +.SPRITE_2FD{background:no-repeat url(../emoji/sprite.png) 0 -90px;width:18px;height:18px} +.SPRITE_2FE{background:no-repeat url(../emoji/sprite.png) -54px -305px;width:18px;height:16px} +.SPRITE_2FF{background:no-repeat url(../emoji/sprite.png) -54px -72px;width:18px;height:16px} +.SPRITE_none{background:no-repeat url(../emoji/sprite.png) -54px -180px;width:18px;height:18px} +.SPRITE_unknown{background:no-repeat url(../emoji/sprite.png) -36px -323px;width:14px;height:15px} http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/deps.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/editor/deps.js b/externs/GCL/externs/goog/demos/editor/deps.js new file mode 100644 index 0000000..70b0973 --- /dev/null +++ b/externs/GCL/externs/goog/demos/editor/deps.js @@ -0,0 +1,21 @@ +// Copyright 2009 The Closure Library Authors. +// All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// This file has been auto-generated by GenJsDeps, please do not edit. + +goog.addDependency('demos/editor/equationeditor.js', ['goog.demos.editor.EquationEditor'], ['goog.ui.equation.EquationEditorDialog']); +goog.addDependency('demos/editor/helloworld.js', ['goog.demos.editor.HelloWorld'], ['goog.dom', 'goog.dom.TagName', 'goog.editor.Plugin']); +goog.addDependency('demos/editor/helloworlddialog.js', ['goog.demos.editor.HelloWorldDialog', 'goog.demos.editor.HelloWorldDialog.OkEvent'], ['goog.dom.TagName', 'goog.events.Event', 'goog.string', 'goog.ui.editor.AbstractDialog', 'goog.ui.editor.AbstractDialog.Builder', 'goog.ui.editor.AbstractDialog.EventType']); +goog.addDependency('demos/editor/helloworlddialogplugin.js', ['goog.demos.editor.HelloWorldDialogPlugin', 'goog.demos.editor.HelloWorldDialogPlugin.Command'], ['goog.demos.editor.HelloWorldDialog', 'goog.dom.TagName', 'goog.editor.plugins.AbstractDialogPlugin', 'goog.editor.range', 'goog.functions', 'goog.ui.editor.AbstractDialog.EventType']); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworld.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/editor/helloworld.js b/externs/GCL/externs/goog/demos/editor/helloworld.js new file mode 100644 index 0000000..4b2f0c7 --- /dev/null +++ b/externs/GCL/externs/goog/demos/editor/helloworld.js @@ -0,0 +1,82 @@ +// Copyright 2008 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview A simple plugin that inserts 'Hello World!' on command. This + * plugin is intended to be an example of a very simple plugin for plugin + * developers. + * + * @author [email protected] (Gregory Kick) + * @see helloworld.html + */ + +goog.provide('goog.demos.editor.HelloWorld'); + +goog.require('goog.dom'); +goog.require('goog.dom.TagName'); +goog.require('goog.editor.Plugin'); + + + +/** + * Plugin to insert 'Hello World!' into an editable field. + * @constructor + * @extends {goog.editor.Plugin} + * @final + */ +goog.demos.editor.HelloWorld = function() { + goog.editor.Plugin.call(this); +}; +goog.inherits(goog.demos.editor.HelloWorld, goog.editor.Plugin); + + +/** @override */ +goog.demos.editor.HelloWorld.prototype.getTrogClassId = function() { + return 'HelloWorld'; +}; + + +/** + * Commands implemented by this plugin. + * @enum {string} + */ +goog.demos.editor.HelloWorld.COMMAND = { + HELLO_WORLD: '+helloWorld' +}; + + +/** @override */ +goog.demos.editor.HelloWorld.prototype.isSupportedCommand = function( + command) { + return command == goog.demos.editor.HelloWorld.COMMAND.HELLO_WORLD; +}; + + +/** + * Executes a command. Does not fire any BEFORECHANGE, CHANGE, or + * SELECTIONCHANGE events (these are handled by the super class implementation + * of {@code execCommand}. + * @param {string} command Command to execute. + * @override + * @protected + */ +goog.demos.editor.HelloWorld.prototype.execCommandInternal = function( + command) { + var domHelper = this.getFieldObject().getEditableDomHelper(); + var range = this.getFieldObject().getRange(); + range.removeContents(); + var newNode = + domHelper.createDom(goog.dom.TagName.SPAN, null, 'Hello World!'); + range.insertNode(newNode, false); +}; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworlddialog.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/editor/helloworlddialog.js b/externs/GCL/externs/goog/demos/editor/helloworlddialog.js new file mode 100644 index 0000000..5ab271e --- /dev/null +++ b/externs/GCL/externs/goog/demos/editor/helloworlddialog.js @@ -0,0 +1,173 @@ +// Copyright 2008 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview An example of how to write a dialog to be opened by a plugin. + * + */ + +goog.provide('goog.demos.editor.HelloWorldDialog'); +goog.provide('goog.demos.editor.HelloWorldDialog.OkEvent'); + +goog.require('goog.dom.TagName'); +goog.require('goog.events.Event'); +goog.require('goog.string'); +goog.require('goog.ui.editor.AbstractDialog'); + + +// *** Public interface ***************************************************** // + + + +/** + * Creates a dialog to let the user enter a customized hello world message. + * @param {goog.dom.DomHelper} domHelper DomHelper to be used to create the + * dialog's dom structure. + * @constructor + * @extends {goog.ui.editor.AbstractDialog} + * @final + */ +goog.demos.editor.HelloWorldDialog = function(domHelper) { + goog.ui.editor.AbstractDialog.call(this, domHelper); +}; +goog.inherits(goog.demos.editor.HelloWorldDialog, + goog.ui.editor.AbstractDialog); + + +// *** Event **************************************************************** // + + + +/** + * OK event object for the hello world dialog. + * @param {string} message Customized hello world message chosen by the user. + * @constructor + * @extends {goog.events.Event} + * @final + */ +goog.demos.editor.HelloWorldDialog.OkEvent = function(message) { + this.message = message; +}; +goog.inherits(goog.demos.editor.HelloWorldDialog.OkEvent, goog.events.Event); + + +/** + * Event type. + * @type {goog.ui.editor.AbstractDialog.EventType} + * @override + */ +goog.demos.editor.HelloWorldDialog.OkEvent.prototype.type = + goog.ui.editor.AbstractDialog.EventType.OK; + + +/** + * Customized hello world message chosen by the user. + * @type {string} + */ +goog.demos.editor.HelloWorldDialog.OkEvent.prototype.message; + + +// *** Protected interface ************************************************** // + + +/** @override */ +goog.demos.editor.HelloWorldDialog.prototype.createDialogControl = function() { + var builder = new goog.ui.editor.AbstractDialog.Builder(this); + /** @desc Title of the hello world dialog. */ + var MSG_HELLO_WORLD_DIALOG_TITLE = goog.getMsg('Add a Hello World message'); + builder.setTitle(MSG_HELLO_WORLD_DIALOG_TITLE). + setContent(this.createContent_()); + return builder.build(); +}; + + +/** + * Creates and returns the event object to be used when dispatching the OK + * event to listeners, or returns null to prevent the dialog from closing. + * @param {goog.events.Event} e The event object dispatched by the wrapped + * dialog. + * @return {goog.demos.editor.HelloWorldDialog.OkEvent} The event object to be + * used when dispatching the OK event to listeners. + * @protected + * @override + */ +goog.demos.editor.HelloWorldDialog.prototype.createOkEvent = function(e) { + var message = this.getMessage_(); + if (message && + goog.demos.editor.HelloWorldDialog.isValidHelloWorld_(message)) { + return new goog.demos.editor.HelloWorldDialog.OkEvent(message); + } else { + /** @desc Error message telling the user why their message was rejected. */ + var MSG_HELLO_WORLD_DIALOG_ERROR = + goog.getMsg('Your message must contain the words "hello" and "world".'); + this.dom.getWindow().alert(MSG_HELLO_WORLD_DIALOG_ERROR); + return null; // Prevents the dialog from closing. + } +}; + + +// *** Private implementation *********************************************** // + + +/** + * Input element where the user will type their hello world message. + * @type {Element} + * @private + */ +goog.demos.editor.HelloWorldDialog.prototype.input_; + + +/** + * Creates the DOM structure that makes up the dialog's content area. + * @return {Element} The DOM structure that makes up the dialog's content area. + * @private + */ +goog.demos.editor.HelloWorldDialog.prototype.createContent_ = function() { + /** @desc Sample hello world message to prepopulate the dialog with. */ + var MSG_HELLO_WORLD_DIALOG_SAMPLE = goog.getMsg('Hello, world!'); + this.input_ = this.dom.createDom(goog.dom.TagName.INPUT, + {size: 25, value: MSG_HELLO_WORLD_DIALOG_SAMPLE}); + /** @desc Prompt telling the user to enter a hello world message. */ + var MSG_HELLO_WORLD_DIALOG_PROMPT = + goog.getMsg('Enter your Hello World message'); + return this.dom.createDom(goog.dom.TagName.DIV, + null, + [MSG_HELLO_WORLD_DIALOG_PROMPT, this.input_]); +}; + + +/** + * Returns the hello world message currently typed into the dialog's input. + * @return {?string} The hello world message currently typed into the dialog's + * input, or null if called before the input is created. + * @private + */ +goog.demos.editor.HelloWorldDialog.prototype.getMessage_ = function() { + return this.input_ && this.input_.value; +}; + + +/** + * Returns whether or not the given message contains the strings "hello" and + * "world". Case-insensitive and order doesn't matter. + * @param {string} message The message to be checked. + * @return {boolean} Whether or not the given message contains the strings + * "hello" and "world". + * @private + */ +goog.demos.editor.HelloWorldDialog.isValidHelloWorld_ = function(message) { + message = message.toLowerCase(); + return goog.string.contains(message, 'hello') && + goog.string.contains(message, 'world'); +}; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js b/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js new file mode 100644 index 0000000..56a65b6 --- /dev/null +++ b/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js @@ -0,0 +1,117 @@ +// Copyright 2008 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview An example of how to write a dialog plugin. + * + */ + +goog.provide('goog.demos.editor.HelloWorldDialogPlugin'); +goog.provide('goog.demos.editor.HelloWorldDialogPlugin.Command'); + +goog.require('goog.demos.editor.HelloWorldDialog'); +goog.require('goog.dom.TagName'); +goog.require('goog.editor.plugins.AbstractDialogPlugin'); +goog.require('goog.editor.range'); +goog.require('goog.functions'); +goog.require('goog.ui.editor.AbstractDialog'); + + +// *** Public interface ***************************************************** // + + + +/** + * A plugin that opens the hello world dialog. + * @constructor + * @extends {goog.editor.plugins.AbstractDialogPlugin} + * @final + */ +goog.demos.editor.HelloWorldDialogPlugin = function() { + goog.editor.plugins.AbstractDialogPlugin.call(this, + goog.demos.editor.HelloWorldDialogPlugin.Command.HELLO_WORLD_DIALOG); +}; +goog.inherits(goog.demos.editor.HelloWorldDialogPlugin, + goog.editor.plugins.AbstractDialogPlugin); + + +/** + * Commands implemented by this plugin. + * @enum {string} + */ +goog.demos.editor.HelloWorldDialogPlugin.Command = { + HELLO_WORLD_DIALOG: 'helloWorldDialog' +}; + + +/** @override */ +goog.demos.editor.HelloWorldDialogPlugin.prototype.getTrogClassId = + goog.functions.constant('HelloWorldDialog'); + + +// *** Protected interface ************************************************** // + + +/** + * Creates a new instance of the dialog and registers for the relevant events. + * @param {goog.dom.DomHelper} dialogDomHelper The dom helper to be used to + * create the dialog. + * @return {goog.demos.editor.HelloWorldDialog} The dialog. + * @override + * @protected + */ +goog.demos.editor.HelloWorldDialogPlugin.prototype.createDialog = function( + dialogDomHelper) { + var dialog = new goog.demos.editor.HelloWorldDialog(dialogDomHelper); + dialog.addEventListener(goog.ui.editor.AbstractDialog.EventType.OK, + this.handleOk_, + false, + this); + return dialog; +}; + + +// *** Private implementation *********************************************** // + + +/** + * Handles the OK event from the dialog by inserting the hello world message + * into the field. + * @param {goog.demos.editor.HelloWorldDialog.OkEvent} e OK event object. + * @private + */ +goog.demos.editor.HelloWorldDialogPlugin.prototype.handleOk_ = function(e) { + // First restore the selection so we can manipulate the field's content + // according to what was selected. + this.restoreOriginalSelection(); + + // Notify listeners that the field's contents are about to change. + this.getFieldObject().dispatchBeforeChange(); + + // Now we can clear out what was previously selected (if anything). + var range = this.getFieldObject().getRange(); + range.removeContents(); + // And replace it with a span containing our hello world message. + var createdNode = this.getFieldDomHelper().createDom(goog.dom.TagName.SPAN, + null, + e.message); + createdNode = range.insertNode(createdNode, false); + // Place the cursor at the end of the new text node (false == to the right). + goog.editor.range.placeCursorNextTo(createdNode, false); + + // Notify listeners that the field's selection has changed. + this.getFieldObject().dispatchSelectionChangeEvent(); + // Notify listeners that the field's contents have changed. + this.getFieldObject().dispatchChange(); +}; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/200.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/200.gif b/externs/GCL/externs/goog/demos/emoji/200.gif new file mode 100644 index 0000000..6245f69 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/200.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/201.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/201.gif b/externs/GCL/externs/goog/demos/emoji/201.gif new file mode 100644 index 0000000..b740d39 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/201.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/202.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/202.gif b/externs/GCL/externs/goog/demos/emoji/202.gif new file mode 100644 index 0000000..2bc9be6 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/202.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/203.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/203.gif b/externs/GCL/externs/goog/demos/emoji/203.gif new file mode 100644 index 0000000..1ce3f56 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/203.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/204.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/204.gif b/externs/GCL/externs/goog/demos/emoji/204.gif new file mode 100644 index 0000000..2166ce8 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/204.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/205.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/205.gif b/externs/GCL/externs/goog/demos/emoji/205.gif new file mode 100644 index 0000000..363e045 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/205.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/206.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/206.gif b/externs/GCL/externs/goog/demos/emoji/206.gif new file mode 100644 index 0000000..5b95f44 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/206.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BC.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2BC.gif b/externs/GCL/externs/goog/demos/emoji/2BC.gif new file mode 100644 index 0000000..aecbdc0 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BC.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BD.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2BD.gif b/externs/GCL/externs/goog/demos/emoji/2BD.gif new file mode 100644 index 0000000..0b352dd Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BD.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BE.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2BE.gif b/externs/GCL/externs/goog/demos/emoji/2BE.gif new file mode 100644 index 0000000..282c361 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BE.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BF.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2BF.gif b/externs/GCL/externs/goog/demos/emoji/2BF.gif new file mode 100644 index 0000000..5b88ee7 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BF.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C0.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C0.gif b/externs/GCL/externs/goog/demos/emoji/2C0.gif new file mode 100644 index 0000000..17fa1a3 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C0.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C1.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C1.gif b/externs/GCL/externs/goog/demos/emoji/2C1.gif new file mode 100644 index 0000000..a1f294a Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C1.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C2.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C2.gif b/externs/GCL/externs/goog/demos/emoji/2C2.gif new file mode 100644 index 0000000..01dadbe Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C2.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C3.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C3.gif b/externs/GCL/externs/goog/demos/emoji/2C3.gif new file mode 100644 index 0000000..69a6126 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C3.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C4.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C4.gif b/externs/GCL/externs/goog/demos/emoji/2C4.gif new file mode 100644 index 0000000..224527b Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C4.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C5.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C5.gif b/externs/GCL/externs/goog/demos/emoji/2C5.gif new file mode 100644 index 0000000..2fe94b3 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C5.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C6.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C6.gif b/externs/GCL/externs/goog/demos/emoji/2C6.gif new file mode 100644 index 0000000..8b1e731 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C6.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C7.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C7.gif b/externs/GCL/externs/goog/demos/emoji/2C7.gif new file mode 100644 index 0000000..3d7c63a Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C7.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C8.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C8.gif b/externs/GCL/externs/goog/demos/emoji/2C8.gif new file mode 100644 index 0000000..cb44d16 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C8.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C9.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2C9.gif b/externs/GCL/externs/goog/demos/emoji/2C9.gif new file mode 100644 index 0000000..69fe427 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C9.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CA.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CA.gif b/externs/GCL/externs/goog/demos/emoji/2CA.gif new file mode 100644 index 0000000..cba4c24 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CA.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CB.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CB.gif b/externs/GCL/externs/goog/demos/emoji/2CB.gif new file mode 100644 index 0000000..c1f035e Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CB.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CC.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CC.gif b/externs/GCL/externs/goog/demos/emoji/2CC.gif new file mode 100644 index 0000000..bd757fa Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CC.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CD.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CD.gif b/externs/GCL/externs/goog/demos/emoji/2CD.gif new file mode 100644 index 0000000..f42f5a1 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CD.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CE.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CE.gif b/externs/GCL/externs/goog/demos/emoji/2CE.gif new file mode 100644 index 0000000..3f6eff3 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CE.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CF.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2CF.gif b/externs/GCL/externs/goog/demos/emoji/2CF.gif new file mode 100644 index 0000000..2f7d407 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CF.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D0.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D0.gif b/externs/GCL/externs/goog/demos/emoji/2D0.gif new file mode 100644 index 0000000..37da48e Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D0.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D1.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D1.gif b/externs/GCL/externs/goog/demos/emoji/2D1.gif new file mode 100644 index 0000000..2bc951d Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D1.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D2.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D2.gif b/externs/GCL/externs/goog/demos/emoji/2D2.gif new file mode 100644 index 0000000..a7c50db Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D2.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D3.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D3.gif b/externs/GCL/externs/goog/demos/emoji/2D3.gif new file mode 100644 index 0000000..22ceddf Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D3.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D4.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D4.gif b/externs/GCL/externs/goog/demos/emoji/2D4.gif new file mode 100644 index 0000000..8e99652 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D4.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D5.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D5.gif b/externs/GCL/externs/goog/demos/emoji/2D5.gif new file mode 100644 index 0000000..4837a48 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D5.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D6.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D6.gif b/externs/GCL/externs/goog/demos/emoji/2D6.gif new file mode 100644 index 0000000..bd7230f Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D6.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D7.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D7.gif b/externs/GCL/externs/goog/demos/emoji/2D7.gif new file mode 100644 index 0000000..880829f Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D7.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D8.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D8.gif b/externs/GCL/externs/goog/demos/emoji/2D8.gif new file mode 100644 index 0000000..7d727db Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D8.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D9.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2D9.gif b/externs/GCL/externs/goog/demos/emoji/2D9.gif new file mode 100644 index 0000000..98a0fa2 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D9.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DA.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DA.gif b/externs/GCL/externs/goog/demos/emoji/2DA.gif new file mode 100644 index 0000000..c831816 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DA.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DB.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DB.gif b/externs/GCL/externs/goog/demos/emoji/2DB.gif new file mode 100644 index 0000000..301c931 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DB.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DC.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DC.gif b/externs/GCL/externs/goog/demos/emoji/2DC.gif new file mode 100644 index 0000000..27ab408 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DC.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DD.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DD.gif b/externs/GCL/externs/goog/demos/emoji/2DD.gif new file mode 100644 index 0000000..b5e6edf Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DD.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DE.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DE.gif b/externs/GCL/externs/goog/demos/emoji/2DE.gif new file mode 100644 index 0000000..b9a7272 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DE.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DF.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2DF.gif b/externs/GCL/externs/goog/demos/emoji/2DF.gif new file mode 100644 index 0000000..89fa186 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DF.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E0.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E0.gif b/externs/GCL/externs/goog/demos/emoji/2E0.gif new file mode 100644 index 0000000..7fd754a Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E0.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E1.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E1.gif b/externs/GCL/externs/goog/demos/emoji/2E1.gif new file mode 100644 index 0000000..6926e4e Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E1.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E2.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E2.gif b/externs/GCL/externs/goog/demos/emoji/2E2.gif new file mode 100644 index 0000000..1718dae Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E2.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E3.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E3.gif b/externs/GCL/externs/goog/demos/emoji/2E3.gif new file mode 100644 index 0000000..4f23b2b Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E3.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E4.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E4.gif b/externs/GCL/externs/goog/demos/emoji/2E4.gif new file mode 100644 index 0000000..ab2c9eb Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E4.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E5.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E5.gif b/externs/GCL/externs/goog/demos/emoji/2E5.gif new file mode 100644 index 0000000..ff8f45b Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E5.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E6.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E6.gif b/externs/GCL/externs/goog/demos/emoji/2E6.gif new file mode 100644 index 0000000..56e75e8 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E6.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E7.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E7.gif b/externs/GCL/externs/goog/demos/emoji/2E7.gif new file mode 100644 index 0000000..157042d Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E7.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E8.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E8.gif b/externs/GCL/externs/goog/demos/emoji/2E8.gif new file mode 100644 index 0000000..1eb1cc9 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E8.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E9.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2E9.gif b/externs/GCL/externs/goog/demos/emoji/2E9.gif new file mode 100644 index 0000000..5b98149 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E9.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EA.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2EA.gif b/externs/GCL/externs/goog/demos/emoji/2EA.gif new file mode 100644 index 0000000..40d60a6 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EA.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EB.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2EB.gif b/externs/GCL/externs/goog/demos/emoji/2EB.gif new file mode 100644 index 0000000..8e2ca7d Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EB.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EC.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2EC.gif b/externs/GCL/externs/goog/demos/emoji/2EC.gif new file mode 100644 index 0000000..884e226 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EC.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2ED.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2ED.gif b/externs/GCL/externs/goog/demos/emoji/2ED.gif new file mode 100644 index 0000000..b50ba96 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2ED.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EE.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2EE.gif b/externs/GCL/externs/goog/demos/emoji/2EE.gif new file mode 100644 index 0000000..a96fbd1 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EE.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EF.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2EF.gif b/externs/GCL/externs/goog/demos/emoji/2EF.gif new file mode 100644 index 0000000..13a0d2b Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EF.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F0.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F0.gif b/externs/GCL/externs/goog/demos/emoji/2F0.gif new file mode 100644 index 0000000..1538221 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F0.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F1.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F1.gif b/externs/GCL/externs/goog/demos/emoji/2F1.gif new file mode 100644 index 0000000..d04c68d Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F1.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F2.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F2.gif b/externs/GCL/externs/goog/demos/emoji/2F2.gif new file mode 100644 index 0000000..402dfce Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F2.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F3.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F3.gif b/externs/GCL/externs/goog/demos/emoji/2F3.gif new file mode 100644 index 0000000..250271e Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F3.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F4.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F4.gif b/externs/GCL/externs/goog/demos/emoji/2F4.gif new file mode 100644 index 0000000..dec31af Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F4.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F5.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F5.gif b/externs/GCL/externs/goog/demos/emoji/2F5.gif new file mode 100644 index 0000000..bed6e71 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F5.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F6.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F6.gif b/externs/GCL/externs/goog/demos/emoji/2F6.gif new file mode 100644 index 0000000..e9b885f Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F6.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F7.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F7.gif b/externs/GCL/externs/goog/demos/emoji/2F7.gif new file mode 100644 index 0000000..5bdcb64 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F7.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F8.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F8.gif b/externs/GCL/externs/goog/demos/emoji/2F8.gif new file mode 100644 index 0000000..629016b Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F8.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F9.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2F9.gif b/externs/GCL/externs/goog/demos/emoji/2F9.gif new file mode 100644 index 0000000..f8b41da Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F9.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FA.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FA.gif b/externs/GCL/externs/goog/demos/emoji/2FA.gif new file mode 100644 index 0000000..0a4a5b3 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FA.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FB.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FB.gif b/externs/GCL/externs/goog/demos/emoji/2FB.gif new file mode 100644 index 0000000..620d898 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FB.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FC.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FC.gif b/externs/GCL/externs/goog/demos/emoji/2FC.gif new file mode 100644 index 0000000..2171097 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FC.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FD.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FD.gif b/externs/GCL/externs/goog/demos/emoji/2FD.gif new file mode 100644 index 0000000..c6bcdb4 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FD.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FE.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FE.gif b/externs/GCL/externs/goog/demos/emoji/2FE.gif new file mode 100644 index 0000000..a8888c5 Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FE.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FF.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/2FF.gif b/externs/GCL/externs/goog/demos/emoji/2FF.gif new file mode 100644 index 0000000..6022c4c Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FF.gif differ http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/none.gif ---------------------------------------------------------------------- diff --git a/externs/GCL/externs/goog/demos/emoji/none.gif b/externs/GCL/externs/goog/demos/emoji/none.gif new file mode 100644 index 0000000..8e1f90e Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/none.gif differ
