diff --git a/src/sql/workbench/api/node/extHostModelView.ts b/src/sql/workbench/api/node/extHostModelView.ts index 6deb9e0005..ed943481a5 100644 --- a/src/sql/workbench/api/node/extHostModelView.ts +++ b/src/sql/workbench/api/node/extHostModelView.ts @@ -429,9 +429,9 @@ class ComponentWrapper implements sqlops.Component { public onEvent(eventArgs: IComponentEventArgs) { if (eventArgs && eventArgs.eventType === ComponentEventType.PropertiesChanged) { this.properties = eventArgs.args; - } - else if (eventArgs && eventArgs.eventType === ComponentEventType.validityChanged) { + } else if (eventArgs && eventArgs.eventType === ComponentEventType.validityChanged) { this._valid = eventArgs.args; + this._onValidityChangedEmitter.fire(this._valid); } else if (eventArgs) { let emitter = this._emitterMap.get(eventArgs.eventType); if (emitter) { diff --git a/src/sqltest/workbench/api/extHostModelView.test.ts b/src/sqltest/workbench/api/extHostModelView.test.ts index d22a983c8a..f91fb52691 100644 --- a/src/sqltest/workbench/api/extHostModelView.test.ts +++ b/src/sqltest/workbench/api/extHostModelView.test.ts @@ -118,4 +118,14 @@ suite('ExtHostModelView Validation Tests', () => { }); assert.equal(inputBox.valid, true, 'Input box did not update validity to true based on the validityChanged event'); }); + + test('Main thread validityChanged events cause component to fire validity changed events', () => { + let validityFromEvent: boolean = undefined; + inputBox.onValidityChanged(valid => validityFromEvent = valid); + extHostModelView.$handleEvent(handle, inputBox.id, { + eventType: ComponentEventType.validityChanged, + args: false + }); + assert.equal(validityFromEvent, false, 'Main thread validityChanged event did not cause component to fire its own event'); + }); }); \ No newline at end of file diff --git a/src/vs/base/browser/ui/inputbox/inputBox.ts b/src/vs/base/browser/ui/inputbox/inputBox.ts index 48094be732..89b313cba8 100644 --- a/src/vs/base/browser/ui/inputbox/inputBox.ts +++ b/src/vs/base/browser/ui/inputbox/inputBox.ts @@ -364,7 +364,11 @@ export class InputBox extends Widget { }; } - if (!errorMsg) { + if (errorMsg) { + this.inputElement.setAttribute('aria-invalid', 'true'); + this.showMessage(errorMsg); + } + else if (this.inputElement.hasAttribute('aria-invalid')) { this.inputElement.removeAttribute('aria-invalid'); this.hideMessage(); }