Fix text undefined error

This commit fixes the 'text is undefined' error in gr-autocomplete
by setting a default value for text, as well as catching the case
where text is set to undefined.

This commit also disables the built-in autocomplete on the input
element in the gr-autocomplete element to avoid redundancy.

Bug: Issue 4276
Change-Id: Ia4d084068da223d10273110a402690e3b0af2e94
diff --git a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.html b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.html
index 278f002..cda2492 100644
--- a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.html
+++ b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.html
@@ -55,7 +55,8 @@
         bind-value="{{text}}"
         placeholder="[[placeholder]]"
         on-keydown="_handleInputKeydown"
-        on-focus="_updateSuggestions" />
+        on-focus="_updateSuggestions"
+        autocomplete="off" />
     <div
         id="suggestions"
         hidden$="[[_computeSuggestionsHidden(_suggestions)]]">
diff --git a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
index 871dbc1..0fc6b07 100644
--- a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
+++ b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete.js
@@ -64,6 +64,7 @@
 
       text: {
         type: String,
+        value: '',
         observer: '_updateSuggestions',
         notify: true,
       },
@@ -131,7 +132,7 @@
     },
 
     _updateSuggestions: function() {
-      if (this._disableSuggestions) { return; }
+      if (!this.text || this._disableSuggestions) { return; }
       if (this.text.length < this.threshold) {
         this._suggestions = [];
         this.value = null;
diff --git a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete_test.html b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete_test.html
index 0ab9058..f8b16b7 100644
--- a/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-autocomplete/gr-autocomplete_test.html
@@ -215,6 +215,13 @@
       assert.equal(element._computeClass(true), 'borderless');
     });
 
+    test('undefined or empty text results in no suggestions', function() {
+      sinon.spy(element, '_updateSuggestions');
+      element.text = undefined;
+      assert(element._updateSuggestions.calledOnce);
+      assert.equal(element._suggestions.length, 0);
+    });
+
     test('multi completes only the last part of the query', function(done) {
       var promise;
       var queryStub = sinon.stub()