| Index: Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js | 
| diff --git a/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js b/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js | 
| index a01ac5e079b1be234d130ac3d6b6208a6a4e499a..fef9b534c297456d5bb86583b728ba7b0cbe003c 100644 | 
| --- a/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js | 
| +++ b/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js | 
| @@ -956,6 +956,13 @@ WebInspector.CodeMirrorTextEditor.prototype = { | 
| }, | 
|  | 
| /** | 
| +     * @return {string} | 
| +     */ | 
| +    mimeType: function() { | 
| +        return this._mimeType; | 
| +    }, | 
| + | 
| +    /** | 
| * @param {boolean} readOnly | 
| */ | 
| setReadOnly: function(readOnly) | 
| @@ -1058,15 +1065,22 @@ WebInspector.CodeMirrorTextEditor.prototype = { | 
| _contextMenu: function(event) | 
| { | 
| var contextMenu = new WebInspector.ContextMenu(event); | 
| +        event.consume(true); //Consume event now to prevent document from handling the async menu | 
| var target = event.target.enclosingNodeOrSelfWithClass("CodeMirror-gutter-elt"); | 
| +        var prom; | 
| if (target) | 
| -            this._delegate.populateLineGutterContextMenu(contextMenu, parseInt(target.textContent, 10) - 1); | 
| +            prom = this._delegate.populateLineGutterContextMenu(contextMenu, parseInt(target.textContent, 10) - 1); | 
| else { | 
| var textSelection = this.selection(); | 
| -            this._delegate.populateTextAreaContextMenu(contextMenu, textSelection.startLine, textSelection.startColumn); | 
| +            prom = this._delegate.populateTextAreaContextMenu(contextMenu, textSelection.startLine, textSelection.startColumn); | 
| +        } | 
| + | 
| +        prom.then(showAsync, showAsync); | 
| +        var _this = this; | 
| +        function showAsync() { | 
| +            contextMenu.appendApplicableItems(_this); | 
| +            contextMenu.show(); | 
| } | 
| -        contextMenu.appendApplicableItems(this); | 
| -        contextMenu.show(); | 
| }, | 
|  | 
| /** | 
| @@ -1537,6 +1551,14 @@ WebInspector.CodeMirrorTextEditor.prototype = { | 
| }, | 
|  | 
| /** | 
| +     * @return {?string} | 
| +     */ | 
| +    url: function() | 
| +    { | 
| +        return this._url; | 
| +    }, | 
| + | 
| +    /** | 
| * @param {number} line | 
| * @param {string} name | 
| * @param {?Object} value | 
| @@ -2164,6 +2186,7 @@ WebInspector.TextEditorDelegate.prototype = { | 
| /** | 
| * @param {!WebInspector.ContextMenu} contextMenu | 
| * @param {number} lineNumber | 
| +     * @return {!Promise} | 
| */ | 
| populateLineGutterContextMenu: function(contextMenu, lineNumber) { }, | 
|  | 
| @@ -2171,6 +2194,7 @@ WebInspector.TextEditorDelegate.prototype = { | 
| * @param {!WebInspector.ContextMenu} contextMenu | 
| * @param {number} lineNumber | 
| * @param {number} columnNumber | 
| +     * @return {!Promise} | 
| */ | 
| populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) { }, | 
|  | 
|  |