1# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2# This Source Code Form is subject to the terms of the Mozilla Public
3# License, v. 2.0. If a copy of the MPL was not distributed with this
4# file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
6# NB: IF YOU ADD ITEMS TO THIS FILE, PLEASE UPDATE THE WHITELIST IN
7# BrowserUITelemetry.jsm. SEE BUG 991757 FOR DETAILS.
8
9      <menugroup id="context-navigation">
10        <menuitem id="context-back"
11                  class="menuitem-iconic"
12                  tooltiptext="&backButton.tooltip;"
13                  aria-label="&backCmd.label;"
14                  command="Browser:BackOrBackDuplicate"
15                  onclick="checkForMiddleClick(this, event);"/>
16        <menuitem id="context-forward"
17                  class="menuitem-iconic"
18                  tooltiptext="&forwardButton.tooltip;"
19                  aria-label="&forwardCmd.label;"
20                  command="Browser:ForwardOrForwardDuplicate"
21                  onclick="checkForMiddleClick(this, event);"/>
22        <menuitem id="context-reload"
23                  class="menuitem-iconic"
24                  tooltiptext="&reloadButton.tooltip;"
25                  aria-label="&reloadCmd.label;"
26                  oncommand="gContextMenu.reload(event);"
27                  onclick="checkForMiddleClick(this, event);"/>
28        <menuitem id="context-stop"
29                  class="menuitem-iconic"
30                  tooltiptext="&stopButton.tooltip;"
31                  aria-label="&stopCmd.label;"
32                  command="Browser:Stop"/>
33        <menuitem id="context-bookmarkpage"
34                  class="menuitem-iconic"
35                  observes="bookmarkThisPageBroadcaster"
36                  aria-label="&bookmarkPageCmd2.label;"
37                  oncommand="gContextMenu.bookmarkThisPage();"/>
38      </menugroup>
39      <menuseparator id="context-sep-navigation"/>
40      <menuseparator id="page-menu-separator"/>
41      <menuitem id="spell-no-suggestions"
42                disabled="true"
43                label="&spellNoSuggestions.label;"/>
44      <menuitem id="spell-add-to-dictionary"
45                label="&spellAddToDictionary.label;"
46                accesskey="&spellAddToDictionary.accesskey;"
47                oncommand="InlineSpellCheckerUI.addToDictionary();"/>
48      <menuitem id="spell-undo-add-to-dictionary"
49                label="&spellUndoAddToDictionary.label;"
50                accesskey="&spellUndoAddToDictionary.accesskey;"
51                oncommand="InlineSpellCheckerUI.undoAddToDictionary();" />
52      <menuseparator id="spell-suggestions-separator"/>
53      <menuitem id="context-openlinkincurrent"
54                label="&openLinkCmdInCurrent.label;"
55                accesskey="&openLinkCmdInCurrent.accesskey;"
56                oncommand="gContextMenu.openLinkInCurrent();"/>
57# label and data-usercontextid are dynamically set.
58      <menuitem id="context-openlinkincontainertab"
59                accesskey="&openLinkCmdInTab.accesskey;"
60                oncommand="gContextMenu.openLinkInTab(event);"/>
61      <menuitem id="context-openlinkintab"
62                label="&openLinkCmdInTab.label;"
63                accesskey="&openLinkCmdInTab.accesskey;"
64                data-usercontextid="0"
65                oncommand="gContextMenu.openLinkInTab(event);"/>
66
67      <menu id="context-openlinkinusercontext-menu"
68            label="&openLinkCmdInContainerTab.label;"
69            accesskey="&openLinkCmdInContainerTab.accesskey;"
70            hidden="true">
71        <menupopup oncommand="gContextMenu.openLinkInTab(event);"
72                   onpopupshowing="return gContextMenu.createContainerMenu(event);" />
73      </menu>
74
75      <menuitem id="context-openlink"
76                label="&openLinkCmd.label;"
77                accesskey="&openLinkCmd.accesskey;"
78                oncommand="gContextMenu.openLink();"/>
79      <menuitem id="context-openlinkprivate"
80                label="&openLinkInPrivateWindowCmd.label;"
81                accesskey="&openLinkInPrivateWindowCmd.accesskey;"
82                oncommand="gContextMenu.openLinkInPrivateWindow();"/>
83      <menuseparator id="context-sep-open"/>
84      <menuitem id="context-bookmarklink"
85                label="&bookmarkThisLinkCmd.label;"
86                accesskey="&bookmarkThisLinkCmd.accesskey;"
87                oncommand="gContextMenu.bookmarkLink();"/>
88      <menuitem id="context-sharelink"
89                label="&shareLink.label;"
90                accesskey="&shareLink.accesskey;"
91                oncommand="gContextMenu.shareLink();"/>
92      <menuitem id="context-savelink"
93                label="&saveLinkCmd.label;"
94                accesskey="&saveLinkCmd.accesskey;"
95                oncommand="gContextMenu.saveLink();"/>
96      <menuitem id="context-copyemail"
97                label="&copyEmailCmd.label;"
98                accesskey="&copyEmailCmd.accesskey;"
99                oncommand="gContextMenu.copyEmail();"/>
100      <menuitem id="context-copylink"
101                label="&copyLinkCmd.label;"
102                accesskey="&copyLinkCmd.accesskey;"
103                oncommand="gContextMenu.copyLink();"/>
104      <menuseparator id="context-sep-copylink"/>
105      <menuitem id="context-media-play"
106                label="&mediaPlay.label;"
107                accesskey="&mediaPlay.accesskey;"
108                oncommand="gContextMenu.mediaCommand('play');"/>
109      <menuitem id="context-media-pause"
110                label="&mediaPause.label;"
111                accesskey="&mediaPause.accesskey;"
112                oncommand="gContextMenu.mediaCommand('pause');"/>
113      <menuitem id="context-media-mute"
114                label="&mediaMute.label;"
115                accesskey="&mediaMute.accesskey;"
116                oncommand="gContextMenu.mediaCommand('mute');"/>
117      <menuitem id="context-media-unmute"
118                label="&mediaUnmute.label;"
119                accesskey="&mediaUnmute.accesskey;"
120                oncommand="gContextMenu.mediaCommand('unmute');"/>
121      <menu id="context-media-playbackrate" label="&mediaPlaybackRate2.label;" accesskey="&mediaPlaybackRate2.accesskey;">
122        <menupopup>
123          <menuitem id="context-media-playbackrate-050x"
124                    label="&mediaPlaybackRate050x2.label;"
125                    accesskey="&mediaPlaybackRate050x2.accesskey;"
126                    type="radio"
127                    name="playbackrate"
128                    oncommand="gContextMenu.mediaCommand('playbackRate', 0.5);"/>
129          <menuitem id="context-media-playbackrate-100x"
130                    label="&mediaPlaybackRate100x2.label;"
131                    accesskey="&mediaPlaybackRate100x2.accesskey;"
132                    type="radio"
133                    name="playbackrate"
134                    checked="true"
135                    oncommand="gContextMenu.mediaCommand('playbackRate', 1.0);"/>
136          <menuitem id="context-media-playbackrate-125x"
137                    label="&mediaPlaybackRate125x2.label;"
138                    accesskey="&mediaPlaybackRate125x2.accesskey;"
139                    type="radio"
140                    name="playbackrate"
141                    oncommand="gContextMenu.mediaCommand('playbackRate', 1.25);"/>
142          <menuitem id="context-media-playbackrate-150x"
143                    label="&mediaPlaybackRate150x2.label;"
144                    accesskey="&mediaPlaybackRate150x2.accesskey;"
145                    type="radio"
146                    name="playbackrate"
147                    oncommand="gContextMenu.mediaCommand('playbackRate', 1.5);"/>
148          <menuitem id="context-media-playbackrate-200x"
149                    label="&mediaPlaybackRate200x2.label;"
150                    accesskey="&mediaPlaybackRate200x2.accesskey;"
151                    type="radio"
152                    name="playbackrate"
153                    oncommand="gContextMenu.mediaCommand('playbackRate', 2.0);"/>
154        </menupopup>
155      </menu>
156      <menuitem id="context-media-loop"
157                label="&mediaLoop.label;"
158                accesskey="&mediaLoop.accesskey;"
159                type="checkbox"
160                oncommand="gContextMenu.mediaCommand('loop');"/>
161      <menuitem id="context-media-showcontrols"
162                label="&mediaShowControls.label;"
163                accesskey="&mediaShowControls.accesskey;"
164                oncommand="gContextMenu.mediaCommand('showcontrols');"/>
165      <menuitem id="context-media-hidecontrols"
166                label="&mediaHideControls.label;"
167                accesskey="&mediaHideControls.accesskey;"
168                oncommand="gContextMenu.mediaCommand('hidecontrols');"/>
169      <menuitem id="context-video-fullscreen"
170                accesskey="&videoFullScreen.accesskey;"
171                label="&videoFullScreen.label;"
172                oncommand="gContextMenu.mediaCommand('fullscreen');"/>
173      <menuitem id="context-leave-dom-fullscreen"
174                accesskey="&leaveDOMFullScreen.accesskey;"
175                label="&leaveDOMFullScreen.label;"
176                oncommand="gContextMenu.leaveDOMFullScreen();"/>
177      <menuseparator id="context-media-sep-commands"/>
178      <menuitem id="context-reloadimage"
179                label="&reloadImageCmd.label;"
180                accesskey="&reloadImageCmd.accesskey;"
181                oncommand="gContextMenu.reloadImage();"/>
182      <menuitem id="context-viewimage"
183                label="&viewImageCmd.label;"
184                accesskey="&viewImageCmd.accesskey;"
185                oncommand="gContextMenu.viewMedia(event);"
186                onclick="checkForMiddleClick(this, event);"/>
187      <menuitem id="context-viewvideo"
188                label="&viewVideoCmd.label;"
189                accesskey="&viewVideoCmd.accesskey;"
190                oncommand="gContextMenu.viewMedia(event);"
191                onclick="checkForMiddleClick(this, event);"/>
192#ifdef CONTEXT_COPY_IMAGE_CONTENTS
193      <menuitem id="context-copyimage-contents"
194                label="&copyImageContentsCmd.label;"
195                accesskey="&copyImageContentsCmd.accesskey;"
196                oncommand="goDoCommand('cmd_copyImage');"/>
197#endif
198      <menuitem id="context-copyimage"
199                label="&copyImageCmd.label;"
200                accesskey="&copyImageCmd.accesskey;"
201                oncommand="gContextMenu.copyMediaLocation();"/>
202      <menuitem id="context-copyvideourl"
203                label="&copyVideoURLCmd.label;"
204                accesskey="&copyVideoURLCmd.accesskey;"
205                oncommand="gContextMenu.copyMediaLocation();"/>
206      <menuitem id="context-copyaudiourl"
207                label="&copyAudioURLCmd.label;"
208                accesskey="&copyAudioURLCmd.accesskey;"
209                oncommand="gContextMenu.copyMediaLocation();"/>
210      <menuseparator id="context-sep-copyimage"/>
211      <menuitem id="context-saveimage"
212                label="&saveImageCmd.label;"
213                accesskey="&saveImageCmd.accesskey;"
214                oncommand="gContextMenu.saveMedia();"/>
215      <menuitem id="context-shareimage"
216                label="&shareImage.label;"
217                accesskey="&shareImage.accesskey;"
218                oncommand="gContextMenu.shareImage();"/>
219      <menuitem id="context-sendimage"
220                label="&emailImageCmd.label;"
221                accesskey="&emailImageCmd.accesskey;"
222                oncommand="gContextMenu.sendMedia();"/>
223      <menuitem id="context-setDesktopBackground"
224                label="&setDesktopBackgroundCmd.label;"
225                accesskey="&setDesktopBackgroundCmd.accesskey;"
226                oncommand="gContextMenu.setDesktopBackground();"/>
227      <menuitem id="context-viewimageinfo"
228                label="&viewImageInfoCmd.label;"
229                accesskey="&viewImageInfoCmd.accesskey;"
230                oncommand="gContextMenu.viewImageInfo();"/>
231      <menuitem id="context-viewimagedesc"
232                label="&viewImageDescCmd.label;"
233                accesskey="&viewImageDescCmd.accesskey;"
234                oncommand="gContextMenu.viewImageDesc(event);"
235                onclick="checkForMiddleClick(this, event);"/>
236      <menuitem id="context-savevideo"
237                label="&saveVideoCmd.label;"
238                accesskey="&saveVideoCmd.accesskey;"
239                oncommand="gContextMenu.saveMedia();"/>
240      <menuitem id="context-sharevideo"
241                label="&shareVideo.label;"
242                accesskey="&shareVideo.accesskey;"
243                oncommand="gContextMenu.shareVideo();"/>
244      <menuitem id="context-saveaudio"
245                label="&saveAudioCmd.label;"
246                accesskey="&saveAudioCmd.accesskey;"
247                oncommand="gContextMenu.saveMedia();"/>
248      <menuitem id="context-video-saveimage"
249                accesskey="&videoSaveImage.accesskey;"
250                label="&videoSaveImage.label;"
251                oncommand="gContextMenu.saveVideoFrameAsImage();"/>
252      <menuitem id="context-sendvideo"
253                label="&emailVideoCmd.label;"
254                accesskey="&emailVideoCmd.accesskey;"
255                oncommand="gContextMenu.sendMedia();"/>
256      <menu id="context-castvideo"
257                label="&castVideoCmd.label;"
258                accesskey="&castVideoCmd.accesskey;">
259        <menupopup id="context-castvideo-popup" onpopupshowing="gContextMenu.populateCastVideoMenu(this)"/>
260      </menu>
261      <menuitem id="context-sendaudio"
262                label="&emailAudioCmd.label;"
263                accesskey="&emailAudioCmd.accesskey;"
264                oncommand="gContextMenu.sendMedia();"/>
265      <menuitem id="context-ctp-play"
266                label="&playPluginCmd.label;"
267                accesskey="&playPluginCmd.accesskey;"
268                oncommand="gContextMenu.playPlugin();"/>
269      <menuitem id="context-ctp-hide"
270                label="&hidePluginCmd.label;"
271                accesskey="&hidePluginCmd.accesskey;"
272                oncommand="gContextMenu.hidePlugin();"/>
273      <menuseparator id="context-sep-ctp"/>
274      <menuitem id="context-sharepage"
275                label="&sharePageCmd.label;"
276                accesskey="&sharePageCmd.accesskey;"
277                oncommand="SocialShare.sharePage();"/>
278      <menuitem id="context-savepage"
279                label="&savePageCmd.label;"
280                accesskey="&savePageCmd.accesskey2;"
281                oncommand="gContextMenu.savePageAs();"/>
282      <menuseparator id="context-sep-sendpagetodevice" hidden="true"/>
283      <menu id="context-sendpagetodevice"
284                label="&sendPageToDevice.label;"
285                accesskey="&sendPageToDevice.accesskey;"
286                hidden="true">
287        <menupopup id="context-sendpagetodevice-popup"
288                   onpopupshowing="(() => { let browser = gBrowser || getPanelBrowser(); gFxAccounts.populateSendTabToDevicesMenu(event.target, browser.currentURI.spec, browser.contentTitle); })()"/>
289      </menu>
290      <menuseparator id="context-sep-viewbgimage"/>
291      <menuitem id="context-viewbgimage"
292                label="&viewBGImageCmd.label;"
293                accesskey="&viewBGImageCmd.accesskey;"
294                oncommand="gContextMenu.viewBGImage(event);"
295                onclick="checkForMiddleClick(this, event);"/>
296      <menuitem id="context-undo"
297                label="&undoCmd.label;"
298                accesskey="&undoCmd.accesskey;"
299                command="cmd_undo"/>
300      <menuseparator id="context-sep-undo"/>
301      <menuitem id="context-cut"
302                label="&cutCmd.label;"
303                accesskey="&cutCmd.accesskey;"
304                command="cmd_cut"/>
305      <menuitem id="context-copy"
306                label="&copyCmd.label;"
307                accesskey="&copyCmd.accesskey;"
308                command="cmd_copy"/>
309      <menuitem id="context-paste"
310                label="&pasteCmd.label;"
311                accesskey="&pasteCmd.accesskey;"
312                command="cmd_paste"/>
313      <menuitem id="context-delete"
314                label="&deleteCmd.label;"
315                accesskey="&deleteCmd.accesskey;"
316                command="cmd_delete"/>
317      <menuseparator id="context-sep-paste"/>
318      <menuitem id="context-selectall"
319                label="&selectAllCmd.label;"
320                accesskey="&selectAllCmd.accesskey;"
321                command="cmd_selectAll"/>
322      <menuseparator id="context-sep-selectall"/>
323      <menuitem id="context-keywordfield"
324                label="&keywordfield.label;"
325                accesskey="&keywordfield.accesskey;"
326                oncommand="AddKeywordForSearchField();"/>
327      <menuitem id="context-searchselect"
328                oncommand="BrowserSearch.loadSearchFromContext(this.searchTerms);"/>
329      <menuseparator id="context-sep-sendlinktodevice" hidden="true"/>
330      <menu id="context-sendlinktodevice"
331                label="&sendLinkToDevice.label;"
332                accesskey="&sendLinkToDevice.accesskey;"
333                hidden="true">
334        <menupopup id="context-sendlinktodevice-popup"
335                   onpopupshowing="gFxAccounts.populateSendTabToDevicesMenu(event.target, gContextMenu.linkURL, gContextMenu.linkTextStr);"/>
336      </menu>
337      <menuitem id="context-shareselect"
338                label="&shareSelect.label;"
339                accesskey="&shareSelect.accesskey;"
340                oncommand="gContextMenu.shareSelect();"/>
341      <menuseparator id="frame-sep"/>
342      <menu id="frame" label="&thisFrameMenu.label;" accesskey="&thisFrameMenu.accesskey;">
343        <menupopup>
344          <menuitem id="context-showonlythisframe"
345                    label="&showOnlyThisFrameCmd.label;"
346                    accesskey="&showOnlyThisFrameCmd.accesskey;"
347                    oncommand="gContextMenu.showOnlyThisFrame();"/>
348          <menuitem id="context-openframeintab"
349                    label="&openFrameCmdInTab.label;"
350                    accesskey="&openFrameCmdInTab.accesskey;"
351                    oncommand="gContextMenu.openFrameInTab();"/>
352          <menuitem id="context-openframe"
353                    label="&openFrameCmd.label;"
354                    accesskey="&openFrameCmd.accesskey;"
355                    oncommand="gContextMenu.openFrame();"/>
356          <menuseparator id="open-frame-sep"/>
357          <menuitem id="context-reloadframe"
358                    label="&reloadFrameCmd.label;"
359                    accesskey="&reloadFrameCmd.accesskey;"
360                    oncommand="gContextMenu.reloadFrame();"/>
361          <menuseparator/>
362          <menuitem id="context-bookmarkframe"
363                    label="&bookmarkThisFrameCmd.label;"
364                    accesskey="&bookmarkThisFrameCmd.accesskey;"
365                    oncommand="gContextMenu.addBookmarkForFrame();"/>
366          <menuitem id="context-saveframe"
367                    label="&saveFrameCmd.label;"
368                    accesskey="&saveFrameCmd.accesskey;"
369                    oncommand="gContextMenu.saveFrame();"/>
370          <menuseparator/>
371          <menuitem id="context-printframe"
372                    label="&printFrameCmd.label;"
373                    accesskey="&printFrameCmd.accesskey;"
374                    oncommand="gContextMenu.printFrame();"/>
375          <menuseparator/>
376          <menuitem id="context-viewframesource"
377                    label="&viewFrameSourceCmd.label;"
378                    accesskey="&viewFrameSourceCmd.accesskey;"
379                    oncommand="gContextMenu.viewFrameSource();"
380                    observes="isFrameImage"/>
381          <menuitem id="context-viewframeinfo"
382                    label="&viewFrameInfoCmd.label;"
383                    accesskey="&viewFrameInfoCmd.accesskey;"
384                    oncommand="gContextMenu.viewFrameInfo();"/>
385        </menupopup>
386      </menu>
387      <menuitem id="context-viewpartialsource-selection"
388                label="&viewPartialSourceForSelectionCmd.label;"
389                accesskey="&viewPartialSourceCmd.accesskey;"
390                oncommand="gContextMenu.viewPartialSource('selection');"
391                observes="isImage"/>
392      <menuitem id="context-viewpartialsource-mathml"
393                label="&viewPartialSourceForMathMLCmd.label;"
394                accesskey="&viewPartialSourceCmd.accesskey;"
395                oncommand="gContextMenu.viewPartialSource('mathml');"
396                observes="isImage"/>
397      <menuseparator id="context-sep-viewsource"/>
398      <menuitem id="context-viewsource"
399                label="&viewPageSourceCmd.label;"
400                accesskey="&viewPageSourceCmd.accesskey;"
401                oncommand="BrowserViewSource(gContextMenu.browser);"
402                observes="canViewSource"/>
403      <menuitem id="context-viewinfo"
404                label="&viewPageInfoCmd.label;"
405                accesskey="&viewPageInfoCmd.accesskey;"
406                oncommand="gContextMenu.viewInfo();"/>
407      <menuseparator id="spell-separator"/>
408      <menuitem id="spell-check-enabled"
409                label="&spellCheckToggle.label;"
410                type="checkbox"
411                accesskey="&spellCheckToggle.accesskey;"
412                oncommand="InlineSpellCheckerUI.toggleEnabled(window);"/>
413      <menuitem id="spell-add-dictionaries-main"
414                label="&spellAddDictionaries.label;"
415                accesskey="&spellAddDictionaries.accesskey;"
416                oncommand="gContextMenu.addDictionaries();"/>
417      <menu id="spell-dictionaries"
418            label="&spellDictionaries.label;"
419            accesskey="&spellDictionaries.accesskey;">
420          <menupopup id="spell-dictionaries-menu">
421              <menuseparator id="spell-language-separator"/>
422              <menuitem id="spell-add-dictionaries"
423                        label="&spellAddDictionaries.label;"
424                        accesskey="&spellAddDictionaries.accesskey;"
425                        oncommand="gContextMenu.addDictionaries();"/>
426          </menupopup>
427      </menu>
428      <menuseparator hidden="true" id="context-sep-bidi"/>
429      <menuitem hidden="true" id="context-bidi-text-direction-toggle"
430                label="&bidiSwitchTextDirectionItem.label;"
431                accesskey="&bidiSwitchTextDirectionItem.accesskey;"
432                command="cmd_switchTextDirection"/>
433      <menuitem hidden="true" id="context-bidi-page-direction-toggle"
434                label="&bidiSwitchPageDirectionItem.label;"
435                accesskey="&bidiSwitchPageDirectionItem.accesskey;"
436                oncommand="gContextMenu.switchPageDirection();"/>
437      <menuseparator id="fill-login-separator" hidden="true"/>
438      <menu id="fill-login"
439            label="&fillLoginMenu.label;"
440            label-login="&fillLoginMenu.label;"
441            label-password="&fillPasswordMenu.label;"
442            label-username="&fillUsernameMenu.label;"
443            accesskey="&fillLoginMenu.accesskey;"
444            accesskey-login="&fillLoginMenu.accesskey;"
445            accesskey-password="&fillPasswordMenu.accesskey;"
446            accesskey-username="&fillUsernameMenu.accesskey;"
447            hidden="true">
448        <menupopup id="fill-login-popup">
449          <menuitem id="fill-login-no-logins"
450                    label="&noLoginSuggestions.label;"
451                    disabled="true"
452                    hidden="true"/>
453          <menuseparator id="saved-logins-separator"/>
454          <menuitem id="fill-login-saved-passwords"
455                    label="&viewSavedLogins.label;"
456                    oncommand="gContextMenu.openPasswordManager();"/>
457        </menupopup>
458      </menu>
459      <menuseparator id="inspect-separator" hidden="true"/>
460      <menuitem id="context-inspect"
461                hidden="true"
462                label="&inspectContextMenu.label;"
463                accesskey="&inspectContextMenu.accesskey;"
464                oncommand="gContextMenu.inspectNode();"/>
465      <menuseparator id="context-media-eme-separator" hidden="true"/>
466      <menuitem id="context-media-eme-learnmore"
467                class="menuitem-iconic"
468                hidden="true"
469                label="&emeLearnMoreContextMenu.label;"
470                accesskey="&emeLearnMoreContextMenu.accesskey;"
471                oncommand="gContextMenu.drmLearnMore(event);"
472                onclick="checkForMiddleClick(this, event);"/>
473