Bug 1177443 - Add 'system' purpose for searches coming from outside Firefox, r=MattN.

This commit is contained in:
Florian Quèze 2015-08-12 16:57:43 +02:00
Родитель 7a0077d01d
Коммит 3b370060f6
7 изменённых файлов: 34 добавлений и 2 удалений

Просмотреть файл

@ -271,7 +271,7 @@ function doSearch(searchTerm, cmdLine) {
var ss = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(nsIBrowserSearchService);
var submission = ss.defaultEngine.getSubmission(searchTerm);
var submission = ss.defaultEngine.getSubmission(searchTerm, null, "system");
// fill our nsISupportsArray with uri-as-wstring, null, null, postData
var sa = Components.classes["@mozilla.org/supports-array;1"]
@ -789,7 +789,7 @@ nsDefaultCommandLineHandler.prototype = {
var term = params.get("q");
var ss = Components.classes["@mozilla.org/browser/search-service;1"]
.getService(nsIBrowserSearchService);
var submission = ss.defaultEngine.getSubmission(term, null, "searchbar");
var submission = ss.defaultEngine.getSubmission(term, null, "system");
uri = submission.uri;
}
} catch (e) {

Просмотреть файл

@ -103,6 +103,11 @@ function test() {
value: "yhs-005",
purpose: "contextmenu",
},
{
name: "hsimp",
value: "yhs-007",
purpose: "system",
},
],
mozparams: {},
},

Просмотреть файл

@ -25,5 +25,6 @@
<MozParam name="hsimp" condition="purpose" purpose="homepage" value="yhs-003"/>
<MozParam name="hsimp" condition="purpose" purpose="newtab" value="yhs-004"/>
<MozParam name="hsimp" condition="purpose" purpose="contextmenu" value="yhs-005"/>
<MozParam name="hsimp" condition="purpose" purpose="system" value="yhs-007"/>
</Url>
</SearchPlugin>

Просмотреть файл

@ -1323,6 +1323,10 @@ EngineURL.prototype = {
// (purpose="") work consistently rather than having to define "null" and "" purposes.
var purpose = aPurpose || "";
// If the 'system' purpose isn't defined in the plugin, fallback to 'searchbar'.
if (purpose == "system" && !this.params.some(p => p.purpose == "system"))
purpose = "searchbar";
// Create an application/x-www-form-urlencoded representation of our params
// (name=value&name=value&name=value)
var dataString = "";

Просмотреть файл

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>engine-system-purpose</ShortName>
<Url type="text/html" method="GET" template="http://www.google.com/search">
<Param name="q" value="{searchTerms}"/>
<!-- Dynamic parameters -->
<MozParam name="channel" condition="purpose" purpose="searchbar" value="sb"/>
<MozParam name="channel" condition="purpose" purpose="system" value="sys"/>
</Url>
</SearchPlugin>

Просмотреть файл

@ -54,5 +54,16 @@ add_task(function* test_purpose() {
check_submission("&channel=sb", "", null, "searchbar");
check_submission("&channel=sb", "", "text/html", "searchbar");
// verify that the 'system' purpose falls back to the 'searchbar' purpose.
base = "http://www.google.com/search?q=foo";
check_submission("&channel=sb", "foo", "text/html", "system");
check_submission("&channel=sb", "foo", "text/html", "searchbar");
// Add an engine that actually defines the 'system' purpose...
[engine] = yield addTestEngines([
{ name: "engine-system-purpose", xmlFileName: "engine-system-purpose.xml" }
]);
// ... and check that the system purpose is used correctly.
check_submission("&channel=sys", "foo", "text/html", "system");
do_test_finished();
});

Просмотреть файл

@ -16,6 +16,7 @@ support-files =
data/engine-rel-searchform.xml
data/engine-rel-searchform-post.xml
data/engine-rel-searchform-purpose.xml
data/engine-system-purpose.xml
data/engineImages.xml
data/ico-size-16x16-png.ico
data/invalid-engine.xml