Closed Bug 1339250 Opened 3 years ago Closed 3 years ago

[omnibox] "TypeError: this._searchFinishedCallback is not a function"

Categories

(WebExtensions :: Frontend, defect, P3)

52 Branch
defect

Tracking

(firefox55 fixed)

RESOLVED FIXED
mozilla55
Tracking Status
firefox55 --- fixed

People

(Reporter: robwu, Assigned: mattw)

References

(Blocks 1 open bug)

Details

(Whiteboard: [omnibox]triaged)

Attachments

(1 file)

Version: Firefox Nightly: 54.0a1 (2017-02-07)

Steps to reproduce:

1. Create a directory with the following manifest.json:
{
    "name": "omnibox test",
    "version": "1",
    "manifest_version": 2,
    "omnibox": {
        "keyword": "test"
    }
}
2. Visit about:debugging and select manifest.json.
3. Focus the awesomebar and type "test " (including space).
4. Press backspace.
5. Open the global console (which implicitly closes the suggestions list).

The console shows the following error. The first error occurs after step 4, the second error after step 5.

this._searchFinishedCallback is not a function  ExtensionSearchHandler.jsm:72
	cancel resource://gre/modules/ExtensionSearchHandler.jsm:72:5
	handleInputCancelled resource://gre/modules/ExtensionSearchHandler.jsm:289:5
	Search.prototype.execute< resource://gre/components/UnifiedComplete.js:992:7
	next self-hosted:1117:9
	TaskImpl_run resource://gre/modules/Task.jsm:319:42
	bound TaskImpl_run self-hosted:955:17
TypeError: this._searchFinishedCallback is not a function  ExtensionSearchHandler.jsm:72:5
	cancel resource://gre/modules/ExtensionSearchHandler.jsm:72:5
	handleInputCancelled resource://gre/modules/ExtensionSearchHandler.jsm:289:5
	onxblblur chrome://browser/content/urlbarBindings.xml:1240:11
Blocks: 1166831
Component: WebExtensions: General → WebExtensions: Frontend
Priority: -- → P3
Whiteboard: [omnibox]triaged
This bug occurs specifically when an input session is cancelled or submitted after an input session is started but before any onInputChanged events are fired.
Assignee: nobody → mwein
Comment on attachment 8837112 [details]
Bug 1339250 - Fix error caused by ending an input session immediately after the session is started

https://reviewboard.mozilla.org/r/112356/#review113652

::: toolkit/components/places/ExtensionSearchHandler.jsm:80
(Diff revision 1)
>      this._extension.emit(eventName);
>    }
>  
>    end(eventName, text, disposition) {
> +    if (this._searchFinishedCallback) {
> -    this._searchFinishedCallback();
> +      this._searchFinishedCallback();

It seems that the callback is expected to be called only once (http://searchfox.org/mozilla-central/rev/d3307f19d5dac31d7d36fc206b00b686de82eee4/toolkit/components/places/ExtensionSearchHandler.jsm#232), so maybe it would be good to explicitly null the callback (also the `_suggestionsCallback`) to communicate intent?

And does `addSuggestions` need a null-check too?
Attachment #8837112 - Flags: review?(rob) → review+
Comment on attachment 8837112 [details]
Bug 1339250 - Fix error caused by ending an input session immediately after the session is started

https://reviewboard.mozilla.org/r/112356/#review113652

> It seems that the callback is expected to be called only once (http://searchfox.org/mozilla-central/rev/d3307f19d5dac31d7d36fc206b00b686de82eee4/toolkit/components/places/ExtensionSearchHandler.jsm#232), so maybe it would be good to explicitly null the callback (also the `_suggestionsCallback`) to communicate intent?
> 
> And does `addSuggestions` need a null-check too?

I've updated the patch to null out the callbacks to communicate intent - I think `addSuggestsion` does need a null-check after this change.
Keywords: checkin-needed
Pushed by ihsiao@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/efa1ee67e2f1
Fix error caused by ending an input session immediately after the session is started r=robwu
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/efa1ee67e2f1
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Product: Toolkit → WebExtensions
You need to log in before you can comment on or make changes to this bug.