Compare commits

..

14 commits

Author SHA1 Message Date
wuggy
c461f87cc7 Pt..2 2026-09-19 10:47:07 -07:00
wuggy
7e271107da Rename internally from overbite to libgopher 2026-09-19 10:46:55 -07:00
wuggy
04563d010d Disable the first-run new tab thing 2026-09-19 08:37:59 -07:00
wuggy
d8e4052751 Add final_target_files 2026-09-19 08:21:04 -07:00
wuggy
204231fe13 Fuck 3 2026-09-19 08:17:10 -07:00
wuggy
c0b7b62d6b fuck 2 2026-09-19 08:16:02 -07:00
wuggy
9e85d0241f Fuck 2026-09-19 08:14:00 -07:00
wuggy
9c5b5f4ba6 fuck alphabetical order 2026-09-19 08:11:09 -07:00
wuggy
c01bef620c Add about.manifest and protocol.manifest 2026-09-19 07:55:11 -07:00
wuggy
6c5998576b add libgopher to BrowserComponents..manifest 2026-09-19 07:52:24 -07:00
wuggy
0d7c2d50a3 actually install the Gopher protocol LOL 2026-09-19 07:47:57 -07:00
wuggy
21ea8e8a2d Remove double inclusion of content/chrome. 2026-09-19 07:44:49 -07:00
wuggy
1ea8fc9d0f Gopher support initial commit (OverbiteFF plugin ported to browser itself) 2026-09-19 07:41:29 -07:00
wuggy
733789f40b Revert "Issue #2721 - Remove nsILinkHandler."
This reverts commit c3f1c0cdba.
2026-09-19 07:22:05 -07:00
74 changed files with 3094 additions and 88 deletions

View file

@ -0,0 +1,68 @@
*** FOR MORE DETAILED CREDIT INFORMATION, SEE THE SOURCE AND BUILD DOCUMENTATION ***
This code is issued under a disjunctive tri-license giving you the choice of
one of the three following sets of free software/open source licensing terms:
* Mozilla Public License, version 1.1
* GNU General Public License, version 2.0
* GNU Lesser General Public License, version 2.1
For users under the Mozilla Public License:
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is the OverbiteFF Gopher addon.
The Initial Developer of the Original Code is Cameron Kaiser.
Portions created by Cameron Kaiser are Copyright (C) 2008-2011
Cameron Kaiser. All Rights Reserved. Copyright (C) 2008-2011 Contributors
to the Overbite Project.
For users under the GNU Public License:
OverbiteFF Gopher/CSO Firefox addon
Copyright (C) 2008-2011 Cameron Kaiser
Copyright (C) 2008-2011 Contributors to the Overbite Project
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
[ or http://www.gnu.org/licenses/gpl-2.0.html ]
For users under the GNU Lesser General Public License:
OverbiteFF Gopher/CSO Firefox addon
Copyright (C) 2008-2011 Cameron Kaiser
Copyright (C) 2008-2011 Contributors to the Overbite Project
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; version 2.1.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
[ or http://www.gnu.org/licenses/lgpl-2.1.html ]

45
browser/gopher/README.md Normal file
View file

@ -0,0 +1,45 @@
## libgopher
libgopher (a fork of overbiteff) lets you browse Gopher sites directly in legacy Firefox-based browsers such as Dactyloidae.
In this tree it is built into the browser rather than installed as an add-on. The browser registers the Gopher protocol handler during startup, so `gopher://` links work immediately in a new profile.
### Built-in integration
The integration is split into the same pieces used by other browser-native features:
- `moz.build` adds the component files, default preferences, and chrome package to the browser build.
- `components/protocol.manifest` registers the Gopher protocol.
- `components/protocol.js` implements Gopher networking, directory conversion, internal resources, and supported item types.
- `jar.mn` packages the `libgopher` content and locale namespaces.
- `defaults/preferences/gopher.js` initializes the build marker preference.
The browser-level build entry is `browser/moz.build`; no XPI installation or add-on manager registration is required.
### Supported URLs
The primary entry point is any Gopher URL, for example:
```text
gopher://gopher.floodgap.com/
```
There are no built-in informational `about:` pages; navigation starts from a normal `gopher://` URL.
The protocol handler also serves the generated internal resources used by Gopher directory pages, including icons, CSS, and the page interaction script. These resources are addressed through `gopher:///internal-*` URLs and are resolved from the packaged `content/chrome/` directory.
### Gopher item types
Directory conversion includes the traditional Gopher item types for text, menus, CSO/ph, errors, archives, searches, Telnet, images, sound, HTML, movies, PNG, PDF, and generic binary content. Unknown types receive the generic icon and label instead of preventing the directory from loading.
### Profile customization
The protocol handler first checks the profiles `gopherchrome` directory for replacements for internal CSS, JavaScript, and image resources. This allows local visual or behavior changes without editing the browser package.
The following preferences are recognized when present:
- `network.gopher.dotless` — enables dotless text cleanup.
- `network.gopher.fixitype` — enables the legacy item-type correction behavior.
- `network.gopher.buildmark` — records the initialized libgopher build number.
Only the build marker is given a default value by the built-in preference file; the other options remain opt-in.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
component {977ffc4c-a635-433d-8477-ea575bfb7b19} protocol.js
contract @mozilla.org/network/protocol;1?name=gopher {977ffc4c-a635-433d-8477-ea575bfb7b19}
category profile-after-change GopherProtocol @mozilla.org/network/protocol;1?name=gopher

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

View file

@ -0,0 +1,150 @@
/* You can modify this to your heart's content. This version tries to
harmonize with your computer's theme. */
img.gicon {
border: 0px;
}
table.gmenu {
width: 100%;
border: 0px;
}
td.gicon {
text-align: right;
vertical-align: middle;
padding: 0px;
margin: 1px;
}
td.ds {
text-align: left;
vertical-align: middle;
width: 100%;
padding: 0px;
margin: 1px;
}
span.diritem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
}
span.fileitem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
}
span.infoitem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
opacity: 0.9;
}
span.searchitem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
font-weight: bold;
}
span.urlitem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
font-weight: bold;
}
span.telnetitem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
font-weight: bold;
}
span.erroritem {
font-family: lucida sans typewriter, lucida console, droid sans mono, liberation mono, monaco, andale mono, bitstream vera sans mono, monospace;
font-size: small;
font-weight: bold;
}
span.purl {
/* font-family: lucida sans, lucida grande, droid sans, droid sans mono, monospace; */
font: message-box;
font-weight: bold;
font-size: 1.5em;
}
div#topbar {
display: table-row;
padding: 0px;
margin: 0px;
}
div#urlparent {
display: table-cell;
width: 100%;
text-align: left;
padding: 0px;
margin: 0px;
}
div#urlarea {
padding: 8px;
margin-bottom: 0px;
border-style: none;
border-top-width: 1px;
border-left-width: 1px;
border-right-width: 1px;
border-bottom-width: 0px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 10px;
display: table-cell;
vertical-align: text-bottom;
}
div#buttonarea {
padding: 8px;
margin-bottom: 0px;
border-color: ThreeDShadow;
border-style: solid;
border-top-width: 1px;
border-left-width: 1px;
border-right-width: 1px;
border-bottom-width: 0px;
display: table-cell;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 10px;
}
div#contentarea {
clear: both;
padding: 5px;
margin-top: 0px;
border-style: solid;
border-width: 1px;
border-color: ThreeDShadow;
-moz-border-radius-topleft: 10px;
-moz-border-radius-bottomleft: 10px;
-moz-border-radius-bottomright: 10px;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
div#everything {
background-color: #ffffff;
-moz-border-radius: 10px;
border-radius: 10px;
}
body {
background-color: -moz-Dialog;
}
a.plus {
text-decoration: none;
font-family: monospace;
font-weight: bold;
font-size: 2.0em;
padding-right: 2px;
color: #000000;
}
span.inlineprompt {
font: message-box;
}
div.inlineprompt {
border: 1px solid #b0b0b0;
background-color: #d8d8c8;
-moz-border-radius-topleft: 7px;
-moz-border-radius-topright: 7px;
-moz-border-radius-bottomleft: 7px;
-moz-border-radius-bottomright: 7px;
border-top-left-radius: 7px;
border-top-right-radius: 7px;
border-bottom-left-radius: 7px;
border-bottom-right-radius: 7px;
padding: 10px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

View file

@ -0,0 +1,180 @@
/*
This code is issued under a disjunctive tri-license giving you the choice of
one of the three following sets of free software/open source licensing terms:
* Mozilla Public License, version 1.1
* GNU General Public License, version 2.0
* GNU Lesser General Public License, version 2.1
For users under the Mozilla Public License:
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is the OverbiteFF Gopher addon.
The Initial Developer of the Original Code is Cameron Kaiser.
Portions created by Cameron Kaiser are Copyright (C) 2008-2016
Cameron Kaiser. All Rights Reserved. Copyright (C) 2008-2016 Contributors
to the Overbite Project.
For users under the GNU Public License:
OverbiteFF Gopher/CSO Firefox addon
Copyright (C) 2008-2016 Cameron Kaiser
Copyright (C) 2008-2016 Contributors to the Overbite Project
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
[ or http://www.gnu.org/licenses/gpl-2.0.html ]
For users under the GNU Lesser General Public License:
OverbiteFF Gopher/CSO Firefox addon
Copyright (C) 2008-2016 Cameron Kaiser
Copyright (C) 2008-2016 Contributors to the Overbite Project
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; version 2.1.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
[ or http://www.gnu.org/licenses/lgpl-2.1.html ]
*/
/* This controls the JavaScript interface. This runs with content privileges,
not with chrome privileges, by design. It can be blocked by NoScript and
other such tools. It cannot call back to chrome, so it ought not be
naughty. Assuming Mozilla did their job. COW's n'at. */
var openstates = new Object();
var opacstates = new Object();
var timestates = new Object();
var localization = new Object();
const outtime = 30;
/* Function names are short because:
1. I am a lousy programmer
2. I don't care
3. To avoid lots of crap */
/* Reviewer note: You'll see lots of simplistic templating below. The
functions are being called by the HTML generated for gopher menus in
the main nsIChannel object. The nsIChannel thoroughly sanitizes them.
They are never directly called by anything that gets unfiltered user
input, and this script runs with content privileges, not chrome. */
// Store something in localization (passed from chrome bundle)
function l(x, z) {
localization[x] = decodeURI(z);
}
// Create the disclosure "icon"
function w(x, y, z) {
document.write('<a href="#" '+
"onClick=\"x('"+x+"','"+y+"', "+z+");return false\" "+
'class="plus" title="['+localization[1]+']"><span id="pl'+z+'">+</span></a>');
}
// Toggle the disclosure icon, and insert the page image or iframe or
// form for [pgI], [0h] or 7. This uses the <div> scaffolding that chrome
// has already set up for us; we just fill it in.
function x(x, y, z) {
if (!openstates[z]) {
var h = window.innerHeight / 3;
openstates[z] = 1;
document.getElementById("pl"+z).innerHTML = "-";
if (timestates[z])
clearTimeout(timestates[z]);
try {
document.getElementById("pv"+z).style.opacity = 0.0;
opacstates[z] = 0.0;
timestates[z] = setTimeout("fade("+z+")", outtime);
} catch(e) { alert(e); }
if (y == "p" || y == "g" || y == "I") {
document.getElementById("pv"+z).innerHTML =
'<a href="'+x+'"><img style="border: 2px;" src="'+x+'" onload="s(this);"></a>'
} else if (y == "7") {
document.getElementById("pv"+z).innerHTML =
'<div class="inlineprompt">'+
'<form method="get" action="#" onSubmit="f('+"'"+x+"',"+z+');return false">'+
'<span class="inlineprompt">'+localization[0]+'</span><br><br>'+
'<input type="text" id="src'+z+'" size="80" maxlength="255"> ' +
'</form></div>';
document.getElementById("src"+z).focus();
} else {
document.getElementById("pv"+z).innerHTML =
'<iframe src="'+x+'" width="100%" height="'+h+'"></iframe>';
}
} else {
openstates[z] = 0;
if (timestates[z])
clearTimeout(timestates[z]);
timestates[z] = null;
document.getElementById("pl"+z).innerHTML = "+";
document.getElementById("pv"+z).innerHTML = "";
}
return false;
}
// Resize images (onLoad handler for images)
function s(i) {
var w = window.innerWidth - 100;
if (!i.width) return;
if (i.width > w) {
i.width = w;
i.height = w / (i.width / i.height);
}
}
// Dynamically turn a form into a Gopher item type 7 query
function f(u, r) {
window.location=u+"%09"+encodeURI(document.getElementById("src"+r).value);
return false;
}
function fade(z) {
opacstates[z] += 0.1;
document.getElementById("pv"+z).style.opacity = opacstates[z];
if (opacstates[z] >= 1.0) {
timestates[z] = null;
} else {
timestates[z] = setTimeout("fade("+z+")", outtime);
}
}
// future expansion
function edaf(z) {
opacstates[z] -= 0.1;
document.getElementById("pv"+z).style.opacity = opacstates[z];
if (opacstates[z] <= 0.0) {
timestates[z] = null;
} else {
timestates[z] = setTimeout("edaf("+z+")", outtime);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

View file

@ -0,0 +1 @@
pref("network.gopher.buildmark", 0);

33
browser/gopher/jar.mn Normal file
View file

@ -0,0 +1,33 @@
# -*- Mode: makefile; tab-width: 8; indent-tabs-mode: t; -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
gopher.jar:
% content libgopher %content/
% locale libgopher da-DK %locale/da-DK/
% locale libgopher de-DE %locale/de-DE/
% locale libgopher en-US %locale/en-US/
% locale libgopher es-ES %locale/es-ES/
% locale libgopher fr-FR %locale/fr-FR/
% locale libgopher hu-HU %locale/hu-HU/
% locale libgopher ja-JP %locale/ja-JP/
% locale libgopher nb-NO %locale/nb-NO/
% locale libgopher nl-NL %locale/nl-NL/
% locale libgopher pl-PL %locale/pl-PL/
% locale libgopher ru-RU %locale/ru-RU/
% locale libgopher tr-TR %locale/tr-TR/
content/ (content/*)
locale/da-DK/ (locale/da-DK/*)
locale/de-DE/ (locale/de-DE/*)
locale/en-US/ (locale/en-US/*)
locale/es-ES/ (locale/es-ES/*)
locale/fr-FR/ (locale/fr-FR/*)
locale/hu-HU/ (locale/hu-HU/*)
locale/ja-JP/ (locale/ja-JP/*)
locale/nb-NO/ (locale/nb-NO/*)
locale/nl-NL/ (locale/nl-NL/*)
locale/pl-PL/ (locale/pl-PL/*)
locale/ru-RU/ (locale/ru-RU/*)
locale/tr-TR/ (locale/tr-TR/*)

View file

@ -0,0 +1,25 @@
unknown=Ukendt type
telnet=Forbundet til vært gennem Telnet/TN3270
exturl=Ekstern URL
unsafeurl=Usikkert URL data udeladt
backpath=Gå til roden af denne server
uplev=Up
preview=View inline
0=Tekst dokument
1=Gopher menu
2=CSO/ph/qi telefone søgning
3=Gopher fejl
4=BinHex arkive
5=ZIP eller binært arkive
6=UUenkoded arkive
7=Applikation eller søgemaskine
8=Telnet forbindelse
9=Binær file
g=GIF billede
I=JPEG eller andet generisk billede
s=Lyd file
h=HTML file
;=Film/animations file
p=PNG billede
d=PDF dokument
T=Telnet/TN3270 forbindelse

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopher tilføjelse til firefox
hurl.error.title=Usikker URL %S
hurl.error=Denne URL indholder et usikker mål for omdirigering og er blevet udeladt.
hurl.warning.title=Gopher hURL omdirigering
hurl.warning=Dette element vil omdirigere dig til følgende ny URL:\n\n\t%S\n\nHvis du ikke genkender eller stoler på denne url, skal du trykke Cancel. Ellers tryk OK for at forsætte.
search.title=Angive parametere
search=Angive parametere som fjern serveren skal behandele:
cso.title=Angive CSO/ph forspørsel
cso=Angive nøgleord som der skal søges efter (eller en fuldstændig CSO/ph kommand begyndene med 'query').\n\nDin forspørgsel vil blive sendt uden nogen signatur.
csobogus.title=Ugyldig CSO/ph forspørgelse
csobogus=Denne forspørgelse er blevet annuleret da ingen kommando eller nøgleord blev modtaget.
baditype.title=Ugyldig element type
baditype=Dette element kan ikke vises direkte i din browser.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Unbekannter Typ
telnet=Verbindung zu Host via Telnet/TN3270
exturl=Externe URL
unsafeurl=Unsichere URL-Daten wurden geblockt.
backpath=Zurück zum Wurzelmenü dieses Servers
preview=Sehe inline
uplev=Umgebende Menü
0=Textdokument
1=Gopher Menü
2=CSO/ph/qi-Adressbuchsuche
3=Gopher Fehler
4=BinHex-Archiv
5=ZIP oder Binärarchiv
6=UUencodiertes Archiv
7=Anwendung oder Suchmaschine
8=Telnet-Verbindung
9=Binärdatei
g=GIF-Bild
I=JPEG oder anderes Bildformat
s=Klangdatei
h=HTML-Datei
;=Film oder Animation
p=PNG-Bild
d=PDF-Dokument
T=Telnet/TN3270-Verbindung

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopher-Erweiterung für Firefox
hurl.error.title=Unsichere URL %S
hurl.error=Diese URL verweist auf ein unsicheres Ziel. Die Weiterleitung wurde darum nicht durchgeführt.
hurl.warning.title=Gopher hURL-Weiterleitung
hurl.warning=Dieser Selektor leitet Sie zur folgenden URL weiter:\n\n\t%S\n\nFalls Sie diese URL nicht kennen, oder sich ihrer Vertrauenswürdigkeit unsicher sind, sollten Sie auf Abbrechen drücken. Andernfalls drücken Sie bitte auf OK um fortzufahren.
search.title=Suchparameter
search=Bitte geben Sie die Parameter für den entfernten Server ein:
cso.title=CSO/ph-Anfrage
cso=Bitte geben Sie die zu suchenden Schlagwörter (oder ein komplettes CSO/ph-Kommando beginnend mit 'query') ein.\n\nIhre Anfrage wird ohne Authentifizierung gesendet.
csobogus.title=Ungültige CSO/ph-Anfrage
csobogus=Die Anfrage konnte nicht durchgeführt werden, da weder ein Schlagwort noch ein Kommando angegeben wurde.
baditype.title=Ungültiger Item-Typ
baditype=Ihr Browser kann mit diesem Item-Typ leider nicht umgehen.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Unknown type
telnet=Connect to host via Telnet/TN3270
exturl=External URL
unsafeurl=Unsafe URL data suppressed
backpath=Go to root menu for this server
preview=View this file inline
uplev=Up a menu
0=Text document
1=Gopher menu
2=CSO/ph/qi phonebook search
3=Gopher error
4=BinHex archive
5=ZIP or binary archive
6=UUencoded archive
7=Application or search engine
8=Telnet connection
9=Binary file
g=GIF image
I=JPEG or other generic image
s=Sound file
h=HTML file
;=Movie/animation file
p=PNG image
d=PDF document
T=Telnet/TN3270 connection

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopher extension for Firefox
hurl.error.title=Unsafe URL %S
hurl.error=This URL contains an unsafe target for redirection and has been suppressed.
hurl.warning.title=Gopher hURL redirect
hurl.warning=This selector will redirect you to the following new URL:\n\n\t%S\n\nIf you do not recognize or trust this URL, you should click Cancel. Otherwise, click OK to continue.
search.title=Enter parameters
search=Enter parameters for the remote server to process:
cso.title=Enter CSO/ph query
cso=Enter keywords to search for (or a complete CSO/ph command starting with 'query').\n\nYour request will be sent without authentication.
csobogus.title=Invalid CSO/ph query
csobogus=The query is cancelled because no command or keyword was received.
baditype.title=Invalid item type
baditype=This item type cannot be directly displayed by your browser.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Tipo desconocido
telnet=Conectar a anfitrión atraves de Telnet/TN3270
exturl=URL externo
unsafeurl=Datos suprimidos de URL inseguro
backpath=Ir a menú raiz de este servidor
preview=Mirar en linea
uplev=Ir a menú rodeando
0=Documento de texto
1=Menú Gopher
2=Buscar directorio telefonica CSO/ph/qi
3=Error de Gopher
4=Bin-Hex Archivo
5=ZIP o archivo binario
6=Archivo UUencoded
7=Aplicación o motor de búsqueda
8=Conexión Telnet
9=Archivo binario
g=Imagen tipo GIF
I=JPEG u otra imagen genérica
s=Archivo de sonido
h=Archivo HTML
;=Archivo de pelicula/animación
p=Imagen tipo PNG
d=Documento tipo PDF
T=Conexión Telnet/TN3270

View file

@ -0,0 +1,15 @@
network.gopher.description=Extensión Gopher para Firefox
hurl.error.title=URL Insegura %S
hurl.error=Esta URL contiene un destino de reorientación inseguro y ha sido suprimida.
hurl.warning.title=Redirección Gopher hURL
hurl.warning=Este selector lo redireccionará a la siguiente URL:\n\n\t%S\n\nSi no reconoce o confia en esta URL, usted debe hacer clic en el botón de Cancelar. De otro modo, haga clic OK para continuar.
search.title=Introduzca los parámetros
search=Introduzca los parámetros para ejecutar proceso en servidor remoto:
cso.title=Introducir consulta CSO/ph
cso=Introducir palabras clave para buscar (o comando completo CSO/ph comenzando con 'query').\n\nSu solicitud sera enviada sin autenticación.
csobogus.title=Consulta CSO/ph no válida.
csobogus=Su consulta fue cancelada porque ningun commando o palabra clave fue recibido.
baditype.title=Tipo de elemento no válido
baditype=Este tipo de artículo no puede ser mostrado directamente en su navegador.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Type inconnu
telnet=Connexion à l'hôte via Telnet/TN3270
exturl=URL externe
unsafeurl=URL peu sûr, données supprimées
backpath=Aller au menu racine de ce serveur
preview=Afficher ce fichier ici
uplev=Aller au menu enfermant
0=Document texte
1=Menu Gopher
2=Recherche CSO/ph/qi dans un annuaire
3=Erreur Gopher
4=Archive BinHex
5=Archive ZIP ou binaire
6=Archive encodée avec UUencode
7=Application ou moteur de recherche
8=Connexion telnet
9=Fichier binaire
g=Image GIF
I=Image générique ou JPEG
s=Fichier son
h=Fichier HTML
;=Vidéo/fichier d'animation
p=Image PNG
d=Document PDF
T=Connexion Telnet/TN3270

View file

@ -0,0 +1,15 @@
network.gopher.description=Extension Gopher pour Firefox
hurl.error.title=URL peu sûr %S
hurl.error=Cet URL contient une cible de redirection peu sûre et a été supprimée.
hurl.warning.title=Redirection hURL Gopher
hurl.warning=Ce sélecteur va vous rediriger vers l'URL suivant :\n\n\t%S\n\nSi vous ne connaissez ou ne faites pas confiance à cet URL, vous devriez cliquer sur Annuler. Sinon, cliquez sur OK pour continuer.
search.title=Entrez les paramètres
search=Entrez les paramètres à traiter par l'hôte distant :
cso.title=Entrez une requête CSO/ph
cso=Entrez les mots-clefs à rechercher (ou bien un commande CSO/ph complète commençant par 'query').\n\nVotre requête sera envoyée sans authentification.
csobogus.title=Requête CSO/ph non valide.
csobogus=La requête a été annulée parce qu'aucune commande ou mot-clef n'a été reçu.
baditype.title=Type d'item non valide.
baditype=Ce type d'item ne peut pas être affiché directement par votre navigateur.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Ismeretlen típus
telnet=Kapcsolódás a szerverhez Telneten/TN3270-en keresztül
exturl=Külső URL
unsafeurl=Nem biztonságos URL adat figyelmen kívül hagyva
backpath=Ugrás a szerver külső menüjére
preview=View inline
uplev=Up
0=Szöveges dokumentum
1=Gopher menü
2=CSO/ph/qi telefonkönyv keresés
3=Gopher hiba
4=BinHex archív
5=ZIP vagy bináris archív
6=UUencode archív
7=Alkalmazás vagy keresőmotor
8=Telnet kapcsolat
9=Bináris fájl
g=GIF kép
I=JPEG vagy más kép
s=Hangfájl
h=HTML fájl
;=Film/animációs fájl
p=PNG kép
d=PDF dokumentum
T=Telnet/TN3270 kapcsolat

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopher kiegészítés a Firefox-hoz
hurl.error.title=Nem biztonságos URL %S
hurl.error=Ez az URL átirányítást tartalmaz egy nem biztonságos címre, ezért figyelmen kívül hagytam.
hurl.warning.title=Gopher hURL átirányítás
hurl.warning=Ez a selector átirányít erre az URL-re:\n\n\t%S\n\nHa nem ismeri fel vagy bízik meg ebben az URL-ben, kattintson a Mégsem gombra, egyébként pedig az OK gombra a folytatáshoz.
search.title=Írja be a paramétereket
search=Írja be a paramétereket, amiket a távoli szerver feldolgozzon:
cso.title=Írja be a CSO/ph lekérdezést
cso=Írja be a kulcsszavakat, amikre keresni akar (vagy egy teljes CSO/ph parancsot, 'query' kezdettel).\n\nA kérést autentikáció nélkül küldöm el.
csobogus.title=Hibás CSO/ph lekérdezés
csobogus=A lekérdezés sikertelen volt, mert nem kaptam parancsot vagy kulcsszót.
baditype.title=Hibás elemtípus
baditype=Ezt az elemtípust a böngésző nem tudja közvetlenül megjeleníteni.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=未知タイプ
telnet=Telnet/TN3270ホスト接続
exturl=外部URL
unsafeurl=危険なURLデータを抑制した
backpath=当サーバのルート・メニューへ
preview=インライン表示する
uplev=Up
0=テキスト文書
1=Gopherメニュー
2=CSO/ph/qi電話帳検索
3=Gopherエラー
4=BinHexファイル
5=ZIP・その他圧縮ファイル
6=UUencodeファイル
7=アプリケーション・検索エンジン
8=Telnet接続
9=バイナリ・ファイル
g=GIF画像
I=JPEG・その他画像
s=音声ファイル
h=HTMLファイル
;=動画ファイル
p=PNG画像
d=PDF文書
T=Telnet/TN3270接続

View file

@ -0,0 +1,15 @@
network.gopher.description=GopherのFirefox拡張機能
hurl.error.title=危険なURL%S
hurl.error=このURLは危険なリダイレクト先を含んでいるため抑制された。
hurl.warning.title=Gopher hURLリダイレクト
hurl.warning=このセレクターは次のURLへリダイレクトする\n\n\t%S\n\n以上のURLを信頼しない場合Cancelをクリック。URLを開くにはOKをクリック。
search.title=検索条件を入力
search=リモート・サーバのパレメータを入力:
cso.title=CSO/phクエリーを入力
cso=検索のキーワード(もしくは'query'で始まる完全なCSO/phコマンドを入力。\n\nあなたの要求を認証なしで送信する
csobogus.title=無効なCSO/phクエリー
csobogus=コマンドまたはキーワードを受け付けなかったためこのクエリーを中止した。
baditype.title=無効な項目タイプ
baditype=あなたのブラウザではこの項目タイプを直接に表示できない。
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Ukjent type
telnet=Tilkobling til vert gjennom Telnet/TN3270
exturl=Ekstern URL
unsafeurl=Usikker URL-data utestengt
backpath=Gå til rotmenyen for denne server
preview=View inline
uplev=Up
0=Tekstdokument
1=Gopher-meny
2=CSO/ph/qi telefonboksøking
3=Gopher-feil
4=BinHex-arkiv
5=ZIP eller binært arkiv
6=UUkomprimert arkiv
7=Program eller søkemotor
8=Telnet tilkobling
9=Binær fil
g=GIF-bilde
I=JPEG eller annet generisk bilde
s=Lyd-fil
h=HTML-fil
;=Film/animasjons fil
p=PNG-bilde
d=PDF-dokument
T=Telnet/TN3270 tilkobling

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopher utvidelse til firefox
hurl.error.title=Usikker URL %S
hurl.error=Denne URL peker mot et usikker mål for videresending og har blitt utestengt.
hurl.warning.title=Gopher hURL videresending
hurl.warning=Dette elementet vil videresende deg til følgende URL:\n\n\t%S\n\nHvis du ikke gjenkjenner eller stoler på denne URLen, må du trykke Cancel. Ellers trykk OK for å fortsette.
search.title=Angi parametere
search=Angi parametere som verten skal behandle:
cso.title=Angi CSO/ph forespørsel
cso=Angi nøkkelord som skal søkes etter (eller en fulstendig CSO/ph kommando som begynner med 'query').\n\nDin forespørsel vil bli sendt uten noen signatur.
csobogus.title=Ugyldig CSO/ph forespørsel
csobogus=Denne forespørselen har blitt annulert da ingen kommando eller nøkkelord ble mottatt..
baditype.title=Ugyldig element type
baditype=Dette elementet kan ikke vises direkte i din nettleser.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Onbekende type
telnet=Maak een verbinding met de host via Telnet/TN3270
exturl=Externe URL
unsafeurl=Onveilige URL-data geblokkeerd
backpath=Ga naar het hoofdmenu van deze server
preview=Bekijk binnen menu
uplev=Up
0=Tekstdocument
1=Gophermenu
2=CSO/ph/qi telefoonboek
3=Gopherfout
4=BinHex-archief
5=ZIP of binair archief
6=UU-gecodeerd archief
7=Toepassing of zoekmachine
8=Telnetverbinding
9=Binair bestand
g=GIF-afbeelding
I=JPEG of andere afbeelding
s=Geluidsopname
h=HTML-bestand
;=Film/animatie
p=PNG-afbeelding
d=PDF-document
T=Telnet/TN3270-verbinding

View file

@ -0,0 +1,15 @@
network.gopher.description=Gopherextensie voor Firefox
hurl.error.title=Onveilige URL %S
hurl.error=Deze URL bevat een onveilige doorverwijzing en is daarom geblokkeerd.
hurl.warning.title=Gopher-hURL-doorverwijzing
hurl.warning=Deze selector zal u doorsturen naar de volgende nieuwe URL:\n\n\t%S\n\nAls u deze URL niet herkend of vertrouwd, klik dan op Annuleren. Klik anders op OK om door te gaan.
search.title=Voer zoektermen in
search=Geef de zoektermen op die de server moet verwerken:
cso.title=Voer de CS/ph zoekterm in
cso=Voer zoektermen in (of een complete CSO/ph opdracht door te beginnen met 'query').\n\nUw verzoek zal zonder authenticatie worden verstuurd.
csobogus.title=Ongeldige CSO/ph zoekterm
csobogus=De zoekopdracht is geannuleerd omdat er geen opdracht of zoekterm is ontvangen.
baditype.title=Ongeldig itemtype
baditype=Dit itemtype kan niet in uw internetbrowser worden weergegeven.
swapitype.title=Verkeerd itemtype?
swapitype=Menu's hebben meestal het itemtype 1. Wilt u dat de internetbrowser dit aanpast?

View file

@ -0,0 +1,25 @@
unknown=Nieznany rodzaj
telnet=Połącz się z hostem przez Telnet/TN3270
exturl=Zewnętrzny URL
unsafeurl=Wstrzymano dane z niepewnego URL
backpath=Przejdź do menu głównego tego serwera
preview=View inline
uplev=Up
0=Dokument tekstowy
1=Menu gophera
2=Wyszukiwane książki telefonicznej CSO/ph/qi
3=Błąd gophera
4=Archiwum BinHex
5=Archiwum binarne lub zip
6=Archiwum UUencode
7=Aplikacja sieciowa lub wyszukiwarka
8=Połączenie Telnet
9=Plik binarny
g=Plik GIF
I=Plik JPEG lub inny standardowy obrazek
s=Plik dźwiękowy
h=Plik HTML
;=Plik wideo/animacji
p=Plik PNG
d=Dokument PDF
T=Połączenie Telnet/TN3270

View file

@ -0,0 +1,15 @@
network.gopher.description=Rozszerzenie protokołu Gopher dla Firefox
hurl.error.title=Niepewny URL %S
hurl.error=Ten URL zawiera niepewny cel przekierowania i został wstrzymany.
hurl.warning.title=Przekierowanie Gopher hURL
hurl.warning=Ten selektor przekieruje Ciebie do następującego URL:\n\n\t%S\n\nJeśli nie rozpoznajesz i nie ufasz temu URL, powinieneś anulować operację. W przeciwnym razie kliknij OK, aby kontynować.
search.title=Wprowadź parametry
search=Wprowadź parametry do przetworzenia przez zdalny serwer:
cso.title=Wpisz zapytanie CSO/ph
cso=Wprowadź słowa kluczowe do wyszukania (bądź całą komendę CSO/ph zaczynając od 'query').\n\nTwoje zapytanie będzie wysłane bez uwierzytelnienia.
csobogus.title=Niewłaściwe zapytanie CSO/ph
csobogus=Anulowano zapytanie ponieważ nie otrzymano komendy lub słowa kluczowego.
baditype.title=Niewłaściwy rodzaj elementu
baditype=Ten rodzaj elementu nie może być bezpośrednio wyświetlony na Twojej przeglądarce.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Неизвестный тип
telnet=Соединение с сервером Telnet/TN3270
exturl=Внешний URL
unsafeurl=Данные небезопасного URL блокированы
backpath=Перейти к корневому меню этого сервера
preview=Показать содержимое файла
uplev=Up
0=Текстовый документ
1=Меню Gopher
2=Поиск в справочнике CSO/ph/qi
3=Ошибка
4=Архив BinHex
5=ZIP или бинарный архив
6=Архив UUencode
7=Приложение или поисковая система
8=Соединение Telnet
9=Двоичный файл
g=Изображение GIF
I=JPEG или другой стандартный графический формат
s=Звуковой файл
h=Файл HTML
;=Видеофайл/графическая анимация
p=Изображение PNG
d=Документ PDF
T=Соединение Telnet/TN3270

View file

@ -0,0 +1,15 @@
network.gopher.description=Расширение Gopher для Firefox
hurl.error.title=Небезопасный URL %S
hurl.error=Этот URL отклонён, поскольку содержит переадресацию на небезопасный ресурс.
hurl.warning.title=Переадресация Gopher hURL
hurl.warning=Этот селектор перенаправит вас на следующий URL:\n\n\t%S\n\nЕсли вы не знаете этот URL или не доверяете ему, нажмите Отмена. Чтобы продолжить, нажмите OK.
search.title=Ввод параметров
search=Введите параметры для обработки удалённым сервером:
cso.title=Ввод запроса CSO/ph
cso=Введите ключевые слова для поиска (или полную команду CSO/ph, начиная с 'query').\n\nВаш запрос будет отправлен без авторизации.
csobogus.title=Неверный запрос CSO/ph
csobogus=Запрос отменён, так как не получено команды или ключевого слова.
baditype.title=Неверный тип объекта
baditype=Этот тип объекта не может быть непосредственно отображён вашим браузером.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

View file

@ -0,0 +1,25 @@
unknown=Bilinmeyen tip
telnet=Sunucuya Telnet/TN3270 yoluyla bağlantı
exturl=Harici URL
unsafeurl=Güvenli olmayan URL verisi silindi
backpath=Bu sunucunun ana menüsüne git
preview=View inline
uplev=Up
0=Metin döküman
1=Gopher menüsü
2=CSO/ph/qi telefon rehberi arama
3=Gopher hatası
4=BinHex arşiv
5=ZIP ya da ikili (binary) arşiv
6=UUencod'lanmış arşiv
7=Uygulama ya da arama motoru
8=Telnet bağlantısı
9=İkili (binary) dosya
g=GIF görüntü
I=JPEG ya da başka jenerik görüntü
s=Ses dosyası
h=HTML dosya
;=Film/animasyon dosyası
p=PNG görüntü
d=PDF doküman
T=Telnet/TN3270 bağlantısı

View file

@ -0,0 +1,15 @@
network.gopher.description=Firefox için Gopher eklentisi
hurl.error.title=Güvenli olmayan URL %S
hurl.error=Bu URL yönlendirme için güvenli olmayan bir hedef içerir ve silinmiştir.
hurl.warning.title=Gopher hURL yönlendirme
hurl.warning=Bu selektör sizi şu adrese (URL) yönlendirecektir:\n\n\t%S\n\nEğer bu adresi tanımıyor ya da ona güvenmiyorsanız, İptal butonuna tıklamanız önerilir. Aksi takdirde devam etmek için Tamam butonuna tıklayınız.
search.title=Parametreleri giriniz
search=Uzaktaki sunucunun işlemesi için parametreleri giriniz:
cso.title=CSO/ph sorgusu giriniz
cso=Aramak istediğiniz anahtar kelimeleri (ya da 'query' ile başlayan bir CSO/ph komutu) giriniz.\n\nSorgunuz doğruluğu kanıtlanmadan gönderilecektir.
csobogus.title=Geçersiz CSO/ph sorgusu
csobogus=Hiçbir komut ya da anahtar kelime alınamadığından bu sorgu iptal edildi.
baditype.title=Geçersiz item tipi
baditype=Bu item tipi tarayıcınızda doğrudan görüntülenemez.
swapitype.title=Wrong item type?
swapitype=Usually menus are itemtype 1. Would you like the browser to fix this for you?

17
browser/gopher/moz.build Normal file
View file

@ -0,0 +1,17 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
JAR_MANIFESTS += ['jar.mn']
FINAL_TARGET = 'dist/bin/browser'
FINAL_TARGET_FILES.components += [
'components/protocol.js',
'components/protocol.manifest',
]
FINAL_TARGET_FILES['defaults/preferences'] += [
'defaults/preferences/gopher.js',
]

View file

@ -360,6 +360,8 @@
@RESPATH@/browser/components/nsSetDefaultBrowser.js
@RESPATH@/browser/components/internaluserscripts.js
@RESPATH@/browser/components/internaluserscripts.manifest
@RESPATH@/browser/components/protocol.manifest
@RESPATH@/browser/components/protocol.js
@RESPATH@/browser/components/devtools-startup.manifest
@RESPATH@/browser/components/devtools-startup.js
@RESPATH@/browser/components/webideCli.js
@ -590,6 +592,8 @@
@RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
@RESPATH@/browser/chrome/internaluserscripts.manifest
@RESPATH@/browser/chrome/internaluserscripts/*
@RESPATH@/browser/chrome/gopher.manifest
@RESPATH@/browser/chrome/gopher@JAREXT@
@RESPATH@/browser/internal-userscripts/*
@RESPATH@/chrome/toolkit@JAREXT@
@RESPATH@/chrome/toolkit.manifest
@ -628,6 +632,7 @@
@RESPATH@/browser/@PREF_DIR@/basilisk.js
@RESPATH@/browser/@PREF_DIR@/basilisk-branding.js
@RESPATH@/browser/@PREF_DIR@/internaluserscripts.js
@RESPATH@/browser/@PREF_DIR@/gopher.js
@RESPATH@/goanna.js
@RESPATH@/defaults/autoconfig/prefcalls.js
@RESPATH@/browser/defaults/permissions

View file

@ -10,6 +10,7 @@ SPHINX_TREES['browser'] = 'docs'
DIRS += [
'base',
'components',
'gopher',
'internaluserscripts',
'locales',
'modules',

View file

@ -38,6 +38,7 @@ XPIDL_MODULE = 'docshell'
EXPORTS += [
'nsDocShellLoadTypes.h',
'nsILinkHandler.h',
'nsIScrollObserver.h',
'nsIWebShellServices.h',
'SerializedLoadContext.h',

View file

@ -956,6 +956,7 @@ NS_INTERFACE_MAP_BEGIN(nsDocShell)
NS_INTERFACE_MAP_ENTRY(nsIAuthPromptProvider)
NS_INTERFACE_MAP_ENTRY(nsILoadContext)
NS_INTERFACE_MAP_ENTRY(nsIWebShellServices)
NS_INTERFACE_MAP_ENTRY(nsILinkHandler)
NS_INTERFACE_MAP_ENTRY(nsIClipboardCommands)
NS_INTERFACE_MAP_ENTRY(nsIDOMStorageManager)
NS_INTERFACE_MAP_ENTRY(nsINetworkInterceptController)
@ -14057,7 +14058,7 @@ OnLinkClickEvent::OnLinkClickEvent(nsDocShell* aHandler,
{
}
nsresult
NS_IMETHODIMP
nsDocShell::OnLinkClick(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
@ -14109,7 +14110,7 @@ nsDocShell::OnLinkClick(nsIContent* aContent,
return NS_DispatchToCurrentThread(ev);
}
nsresult
NS_IMETHODIMP
nsDocShell::OnLinkClickSync(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
@ -14275,7 +14276,7 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent,
return rv;
}
nsresult
NS_IMETHODIMP
nsDocShell::OnOverLink(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec)
@ -14328,7 +14329,7 @@ nsDocShell::OnOverLink(nsIContent* aContent,
return rv;
}
nsresult
NS_IMETHODIMP
nsDocShell::OnLeaveLink()
{
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(mTreeOwner));

View file

@ -51,6 +51,7 @@
#include "nsIAuthPromptProvider.h"
#include "nsILoadContext.h"
#include "nsIWebShellServices.h"
#include "nsILinkHandler.h"
#include "nsIClipboardCommands.h"
#include "nsITabParent.h"
#include "nsCRT.h"
@ -142,6 +143,7 @@ class nsDocShell final
, public nsIAuthPromptProvider
, public nsILoadContext
, public nsIWebShellServices
, public nsILinkHandler
, public nsIClipboardCommands
, public nsIDOMStorageManager
, public nsINetworkInterceptController
@ -191,70 +193,28 @@ public:
// nsIWebProgressListener has methods with identical names...
NS_FORWARD_NSISECURITYEVENTSINK(nsDocLoader::)
/**
* Process a click on a link.
*
* @param aContent the content for the frame that generated the trigger
* @param aURI a URI object that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (may be an empty
* string)
* @param aFileName non-null when the link should be downloaded as the given file
* @param aPostDataStream the POST data to send
* @param aHeadersDataStream ??? (only used for plugins)
* @param aIsTrusted false if the triggerer is an untrusted DOM event.
* @param aTriggeringPrincipal, if not passed explicitly we fall back to
* the document's principal.
*/
nsresult OnLinkClick(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream,
nsIInputStream* aHeadersDataStream,
bool aIsTrusted,
nsIPrincipal* aTriggeringPrincipal);
/**
* Process a click on a link.
*
* Works the same as OnLinkClick() except it happens immediately rather than
* through an event.
*
* @param aContent the content for the frame that generated the trigger
* @param aURI a URI obect that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (may be an empty
* string)
* @param aFileName non-null when the link should be downloaded as the given file
* @param aPostDataStream the POST data to send
* @param aHeadersDataStream ??? (only used for plugins)
* @param aDocShell (out-param) the DocShell that the request was opened on
* @param aRequest the request that was opened
* @param aTriggeringPrincipal, if not passed explicitly we fall back to
* the document's principal.
*/
nsresult OnLinkClickSync(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream = nullptr,
nsIInputStream* aHeadersDataStream = nullptr,
nsIDocShell** aDocShell = nullptr,
nsIRequest** aRequest = nullptr,
nsIPrincipal* aTriggeringPrincipal = nullptr);
/**
* Process a mouse-over a link.
*
* @param aContent the linked content.
* @param aURI an URI object that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (it may be an empty
* string)
*/
nsresult OnOverLink(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec);
/**
* Process the mouse leaving a link.
*/
nsresult OnLeaveLink();
// nsILinkHandler
NS_IMETHOD OnLinkClick(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream,
nsIInputStream* aHeadersDataStream,
bool aIsTrusted,
nsIPrincipal* aTriggeringPrincipal) override;
NS_IMETHOD OnLinkClickSync(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream = 0,
nsIInputStream* aHeadersDataStream = 0,
nsIDocShell** aDocShell = 0,
nsIRequest** aRequest = 0,
nsIPrincipal* aTriggeringPrincipal = nullptr) override;
NS_IMETHOD OnOverLink(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec) override;
NS_IMETHOD OnLeaveLink() override;
nsDocShellInfoLoadType ConvertLoadTypeToDocShellLoadInfo(uint32_t aLoadType);
uint32_t ConvertDocShellLoadInfoToLoadType(

View file

@ -0,0 +1,99 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsILinkHandler_h___
#define nsILinkHandler_h___
#include "nsISupports.h"
#include "mozilla/EventForwards.h"
class nsIContent;
class nsIDocShell;
class nsIInputStream;
class nsIRequest;
#define NS_ILINKHANDLER_IID \
{ 0xceb9aade, 0x43da, 0x4f1a, \
{ 0xac, 0x8a, 0xc7, 0x09, 0xfb, 0x22, 0x46, 0x64 } }
/**
* Interface used for handling clicks on links
*/
class nsILinkHandler : public nsISupports
{
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ILINKHANDLER_IID)
/**
* Process a click on a link.
*
* @param aContent the content for the frame that generated the trigger
* @param aURI a URI object that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (may be an empty
* string)
* @param aPostDataStream the POST data to send
* @param aFileName non-null when the link should be downloaded as the given file
* @param aHeadersDataStream ???
* @param aIsTrusted false if the triggerer is an untrusted DOM event.
* @param aTriggeringPrincipal, if not passed explicitly we fall back to
* the document's principal.
*/
NS_IMETHOD OnLinkClick(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream,
nsIInputStream* aHeadersDataStream,
bool aIsTrusted,
nsIPrincipal* aTriggeringPrincipal) = 0;
/**
* Process a click on a link.
*
* Works the same as OnLinkClick() except it happens immediately rather than
* through an event.
*
* @param aContent the content for the frame that generated the trigger
* @param aURI a URI obect that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (may be an empty
* string)
* @param aFileName non-null when the link should be downloaded as the given file
* @param aPostDataStream the POST data to send
* @param aHeadersDataStream ???
* @param aDocShell (out-param) the DocShell that the request was opened on
* @param aRequest the request that was opened
* @param aTriggeringPrincipal, if not passed explicitly we fall back to
* the document's principal.
*/
NS_IMETHOD OnLinkClickSync(nsIContent* aContent,
nsIURI* aURI,
const char16_t* aTargetSpec,
const nsAString& aFileName,
nsIInputStream* aPostDataStream = 0,
nsIInputStream* aHeadersDataStream = 0,
nsIDocShell** aDocShell = 0,
nsIRequest** aRequest = 0,
nsIPrincipal* aTriggeringPrincipal = nullptr) = 0;
/**
* Process a mouse-over a link.
*
* @param aContent the linked content.
* @param aURI an URI object that defines the destination for the link
* @param aTargetSpec indicates where the link is targeted (it may be an empty
* string)
*/
NS_IMETHOD OnOverLink(nsIContent* aContent,
nsIURI* aURLSpec,
const char16_t* aTargetSpec) = 0;
/**
* Process the mouse leaving a link.
*/
NS_IMETHOD OnLeaveLink() = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsILinkHandler, NS_ILINKHANDLER_IID)
#endif /* nsILinkHandler_h___ */

View file

@ -27,6 +27,7 @@
#include "nsIContentIterator.h"
#include "nsFocusManager.h"
#include "nsFrameManager.h"
#include "nsILinkHandler.h"
#include "nsIScriptGlobalObject.h"
#include "nsIURL.h"
#include "nsContainerFrame.h"

View file

@ -17,6 +17,7 @@
#include "mozilla/EventStates.h" // for member
#include "mozilla/dom/DirectionalityUtils.h"
#include "nsIDOMElement.h"
#include "nsILinkHandler.h"
#include "nsINodeList.h"
#include "nsNodeUtils.h"
#include "nsAttrAndChildArray.h"

View file

@ -31,6 +31,7 @@
#include "nsIDOMNodeList.h"
#include "nsIContentIterator.h"
#include "nsFocusManager.h"
#include "nsILinkHandler.h"
#include "nsIScriptGlobalObject.h"
#include "nsIURL.h"
#include "nsNetUtil.h"

View file

@ -60,6 +60,7 @@
#include "nsIDOMNodeList.h"
#include "nsIEditor.h"
#include "nsIEditorIMESupport.h"
#include "nsILinkHandler.h"
#include "mozilla/dom/NodeInfo.h"
#include "mozilla/dom/NodeInfoInlines.h"
#include "nsIPresShell.h"

View file

@ -49,7 +49,6 @@
#include "nsIInterfaceRequestorUtils.h"
#include "nsIWebProgress.h"
#include "nsIDocShell.h"
#include "nsDocShell.h" // for ::Cast
#include "nsIPrompt.h"
#include "nsIStringBundle.h"
@ -812,8 +811,9 @@ HTMLFormElement::SubmitSubmission(HTMLFormSubmission* aFormSubmission)
// If there is no link handler, then we won't actually be able to submit.
nsIDocument* doc = GetComposedDoc();
nsCOMPtr<nsIDocShell> container = doc ? doc->GetDocShell() : nullptr;
if (!container || IsEditable()) {
nsCOMPtr<nsISupports> container = doc ? doc->GetContainer() : nullptr;
nsCOMPtr<nsILinkHandler> linkHandler(do_QueryInterface(container));
if (!linkHandler || IsEditable()) {
mIsSubmitting = false;
return NS_OK;
}
@ -892,12 +892,12 @@ HTMLFormElement::SubmitSubmission(HTMLFormSubmission* aFormSubmission)
getter_AddRefs(postDataStream));
NS_ENSURE_SUBMIT_SUCCESS(rv);
rv = nsDocShell::Cast(container)->OnLinkClickSync(this, actionURI,
target.get(),
NullString(),
postDataStream, nullptr,
getter_AddRefs(docShell),
getter_AddRefs(mSubmittingRequest));
rv = linkHandler->OnLinkClickSync(this, actionURI,
target.get(),
NullString(),
postDataStream, nullptr,
getter_AddRefs(docShell),
getter_AddRefs(mSubmittingRequest));
NS_ENSURE_SUBMIT_SUCCESS(rv);
}

View file

@ -7,6 +7,7 @@
#include "nsCOMPtr.h"
#include "nsIForm.h"
#include "nsILinkHandler.h"
#include "nsIDocument.h"
#include "nsGkAtoms.h"
#include "nsIFormControl.h"

View file

@ -79,7 +79,6 @@ else:
]
LOCAL_INCLUDES += [
'/docshell/base',
'/dom/base',
'/dom/plugins/ipc',
'/layout/generic',

View file

@ -27,6 +27,7 @@ using mozilla::DefaultXDisplay;
#include "nsIStringStream.h"
#include "nsNetUtil.h"
#include "mozilla/Preferences.h"
#include "nsILinkHandler.h"
#include "nsIDocShellTreeItem.h"
#include "nsIWebBrowserChrome.h"
#include "nsLayoutUtils.h"
@ -45,7 +46,6 @@ using mozilla::DefaultXDisplay;
#include "nsIScriptSecurityManager.h"
#include "nsIScrollableFrame.h"
#include "nsIDocShell.h"
#include "nsDocShell.h" // for ::Cast
#include "ImageContainer.h"
#include "nsIDOMHTMLCollection.h"
#include "GLContext.h"
@ -440,8 +440,10 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL,
}
// the container of the pres context will give us the link handler
nsCOMPtr<nsIDocShell> container = presContext->GetDocShell();
nsCOMPtr<nsISupports> container = presContext->GetContainerWeak();
NS_ENSURE_TRUE(container,NS_ERROR_FAILURE);
nsCOMPtr<nsILinkHandler> lh = do_QueryInterface(container);
NS_ENSURE_TRUE(lh, NS_ERROR_FAILURE);
nsAutoString unitarget;
if ((0 == PL_strcmp(aTarget, "newwindow")) ||
@ -493,14 +495,8 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL,
triggeringPrincipal = BasePrincipal::CreateCodebasePrincipal(uri, attrs);
}
rv = nsDocShell::Cast(container)->OnLinkClick(content,
uri,
unitarget.get(),
NullString(),
aPostStream,
headersDataStream,
true,
triggeringPrincipal);
rv = lh->OnLinkClick(content, uri, unitarget.get(), NullString(),
aPostStream, headersDataStream, true, triggeringPrincipal);
return rv;
}

View file

@ -34,6 +34,7 @@
#include "nsIDOMHTMLAnchorElement.h"
#include "nsISelectionController.h"
#include "nsIDOMHTMLDocument.h"
#include "nsILinkHandler.h"
#include "nsIInlineSpellChecker.h"
#include "mozilla/css/Loader.h"

View file

@ -24,6 +24,7 @@
#include "nsIWritablePropertyBag2.h"
#include "nsSubDocumentFrame.h"
#include "nsILinkHandler.h"
#include "nsIDOMDocument.h"
#include "nsISelectionListener.h"
#include "mozilla/dom/Selection.h"

View file

@ -52,6 +52,7 @@ class nsITheme;
class nsIContent;
class nsIFrame;
class nsFrameManager;
class nsILinkHandler;
class nsIAtom;
class nsIRunnable;
class gfxUserFontEntry;

View file

@ -3,6 +3,13 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//
// Eric Vaughan
// Netscape Communications
//
// See documentation in associated header file
//
#include "nsImageBoxFrame.h"
#include "nsGkAtoms.h"
#include "nsRenderingContext.h"
@ -19,6 +26,7 @@
#include "nsIPresShell.h"
#include "nsIDocument.h"
#include "nsImageMap.h"
#include "nsILinkHandler.h"
#include "nsIURL.h"
#include "nsILoadGroup.h"
#include "nsContainerFrame.h"