|
1 /* ***** BEGIN LICENSE BLOCK ***** |
|
2 * Version: Mozilla-sample-code 1.0 |
|
3 * |
|
4 * Copyright (c) 2002 Netscape Communications Corporation and |
|
5 * other contributors |
|
6 * |
|
7 * Permission is hereby granted, free of charge, to any person obtaining a |
|
8 * copy of this Mozilla sample software and associated documentation files |
|
9 * (the "Software"), to deal in the Software without restriction, including |
|
10 * without limitation the rights to use, copy, modify, merge, publish, |
|
11 * distribute, sublicense, and/or sell copies of the Software, and to permit |
|
12 * persons to whom the Software is furnished to do so, subject to the |
|
13 * following conditions: |
|
14 * |
|
15 * The above copyright notice and this permission notice shall be included |
|
16 * in all copies or substantial portions of the Software. |
|
17 * |
|
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
|
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
|
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
|
24 * DEALINGS IN THE SOFTWARE. |
|
25 * |
|
26 * Contributor(s): |
|
27 * |
|
28 * ***** END LICENSE BLOCK ***** */ |
|
29 |
|
30 // Local includes |
|
31 #include "resource.h" |
|
32 #include "winEmbed.h" |
|
33 #include "WebBrowserChrome.h" |
|
34 |
|
35 // OS headers |
|
36 #include <stdio.h> |
|
37 |
|
38 // Frozen APIs |
|
39 |
|
40 #include "nsStringAPI.h" |
|
41 #include "nsIComponentManager.h" |
|
42 #include "nsIDOMWindow.h" |
|
43 #include "nsIInterfaceRequestor.h" |
|
44 #include "nsIRequest.h" |
|
45 #include "nsIURI.h" |
|
46 #include "nsIWebProgress.h" |
|
47 #include "nsCWebBrowser.h" |
|
48 |
|
49 // Glue APIs (not frozen, but safe to use because they are statically linked) |
|
50 #include "nsComponentManagerUtils.h" |
|
51 |
|
52 // NON-FROZEN APIS! |
|
53 #include "nsIWebNavigation.h" |
|
54 |
|
55 WebBrowserChrome::WebBrowserChrome() |
|
56 { |
|
57 mNativeWindow = nullptr; |
|
58 mSizeSet = false; |
|
59 } |
|
60 |
|
61 WebBrowserChrome::~WebBrowserChrome() |
|
62 { |
|
63 WebBrowserChromeUI::Destroyed(this); |
|
64 } |
|
65 |
|
66 nsresult WebBrowserChrome::CreateBrowser(int32_t aX, int32_t aY, |
|
67 int32_t aCX, int32_t aCY, |
|
68 nsIWebBrowser **aBrowser) |
|
69 { |
|
70 NS_ENSURE_ARG_POINTER(aBrowser); |
|
71 *aBrowser = nullptr; |
|
72 |
|
73 mWebBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID); |
|
74 |
|
75 if (!mWebBrowser) |
|
76 return NS_ERROR_FAILURE; |
|
77 |
|
78 (void)mWebBrowser->SetContainerWindow(static_cast<nsIWebBrowserChrome*>(this)); |
|
79 |
|
80 nsCOMPtr<nsIBaseWindow> browserBaseWindow = do_QueryInterface(mWebBrowser); |
|
81 |
|
82 mNativeWindow = WebBrowserChromeUI::CreateNativeWindow(static_cast<nsIWebBrowserChrome*>(this)); |
|
83 |
|
84 if (!mNativeWindow) |
|
85 return NS_ERROR_FAILURE; |
|
86 |
|
87 browserBaseWindow->InitWindow( mNativeWindow, |
|
88 nullptr, |
|
89 aX, aY, aCX, aCY); |
|
90 browserBaseWindow->Create(); |
|
91 |
|
92 nsCOMPtr<nsIWebProgressListener> listener(static_cast<nsIWebProgressListener*>(this)); |
|
93 nsCOMPtr<nsIWeakReference> thisListener(do_GetWeakReference(listener)); |
|
94 (void)mWebBrowser->AddWebBrowserListener(thisListener, |
|
95 NS_GET_IID(nsIWebProgressListener)); |
|
96 |
|
97 // The window has been created. Now register for history notifications |
|
98 mWebBrowser->AddWebBrowserListener(thisListener, NS_GET_IID(nsISHistoryListener)); |
|
99 |
|
100 if (mWebBrowser) |
|
101 { |
|
102 *aBrowser = mWebBrowser; |
|
103 NS_ADDREF(*aBrowser); |
|
104 return NS_OK; |
|
105 } |
|
106 return NS_ERROR_FAILURE; |
|
107 } |
|
108 |
|
109 //***************************************************************************** |
|
110 // WebBrowserChrome::nsISupports |
|
111 //***************************************************************************** |
|
112 |
|
113 NS_IMPL_ADDREF(WebBrowserChrome) |
|
114 NS_IMPL_RELEASE(WebBrowserChrome) |
|
115 |
|
116 NS_INTERFACE_MAP_BEGIN(WebBrowserChrome) |
|
117 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome) |
|
118 NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) |
|
119 NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome) |
|
120 NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow) |
|
121 NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) // optional |
|
122 NS_INTERFACE_MAP_ENTRY(nsISHistoryListener) |
|
123 NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) |
|
124 NS_INTERFACE_MAP_ENTRY(nsIObserver) |
|
125 NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener) |
|
126 NS_INTERFACE_MAP_ENTRY(nsITooltipListener) |
|
127 NS_INTERFACE_MAP_END |
|
128 |
|
129 //***************************************************************************** |
|
130 // WebBrowserChrome::nsIInterfaceRequestor |
|
131 //***************************************************************************** |
|
132 |
|
133 NS_IMETHODIMP WebBrowserChrome::GetInterface(const nsIID &aIID, void** aInstancePtr) |
|
134 { |
|
135 NS_ENSURE_ARG_POINTER(aInstancePtr); |
|
136 |
|
137 *aInstancePtr = 0; |
|
138 if (aIID.Equals(NS_GET_IID(nsIDOMWindow))) |
|
139 { |
|
140 if (mWebBrowser) |
|
141 { |
|
142 return mWebBrowser->GetContentDOMWindow((nsIDOMWindow **) aInstancePtr); |
|
143 } |
|
144 return NS_ERROR_NOT_INITIALIZED; |
|
145 } |
|
146 return QueryInterface(aIID, aInstancePtr); |
|
147 } |
|
148 |
|
149 //***************************************************************************** |
|
150 // WebBrowserChrome::nsIWebBrowserChrome |
|
151 //***************************************************************************** |
|
152 |
|
153 NS_IMETHODIMP WebBrowserChrome::SetStatus(uint32_t aType, const char16_t* aStatus) |
|
154 { |
|
155 WebBrowserChromeUI::UpdateStatusBarText(this, aStatus); |
|
156 return NS_OK; |
|
157 } |
|
158 |
|
159 NS_IMETHODIMP WebBrowserChrome::GetWebBrowser(nsIWebBrowser** aWebBrowser) |
|
160 { |
|
161 NS_ENSURE_ARG_POINTER(aWebBrowser); |
|
162 *aWebBrowser = mWebBrowser; |
|
163 NS_IF_ADDREF(*aWebBrowser); |
|
164 return NS_OK; |
|
165 } |
|
166 |
|
167 NS_IMETHODIMP WebBrowserChrome::SetWebBrowser(nsIWebBrowser* aWebBrowser) |
|
168 { |
|
169 mWebBrowser = aWebBrowser; |
|
170 return NS_OK; |
|
171 } |
|
172 |
|
173 NS_IMETHODIMP WebBrowserChrome::GetChromeFlags(uint32_t* aChromeMask) |
|
174 { |
|
175 *aChromeMask = mChromeFlags; |
|
176 return NS_OK; |
|
177 } |
|
178 |
|
179 NS_IMETHODIMP WebBrowserChrome::SetChromeFlags(uint32_t aChromeMask) |
|
180 { |
|
181 mChromeFlags = aChromeMask; |
|
182 return NS_OK; |
|
183 } |
|
184 |
|
185 NS_IMETHODIMP WebBrowserChrome::DestroyBrowserWindow(void) |
|
186 { |
|
187 WebBrowserChromeUI::Destroy(this); |
|
188 return NS_OK; |
|
189 } |
|
190 |
|
191 |
|
192 // IN: The desired browser client area dimensions. |
|
193 NS_IMETHODIMP WebBrowserChrome::SizeBrowserTo(int32_t aWidth, int32_t aHeight) |
|
194 { |
|
195 /* This isn't exactly correct: we're setting the whole window to |
|
196 the size requested for the browser. At time of writing, though, |
|
197 it's fine and useful for winEmbed's purposes. */ |
|
198 WebBrowserChromeUI::SizeTo(this, aWidth, aHeight); |
|
199 mSizeSet = true; |
|
200 return NS_OK; |
|
201 } |
|
202 |
|
203 |
|
204 NS_IMETHODIMP WebBrowserChrome::ShowAsModal(void) |
|
205 { |
|
206 if (mDependentParent) |
|
207 AppCallbacks::EnableChromeWindow(mDependentParent, false); |
|
208 |
|
209 mContinueModalLoop = true; |
|
210 AppCallbacks::RunEventLoop(mContinueModalLoop); |
|
211 |
|
212 if (mDependentParent) |
|
213 AppCallbacks::EnableChromeWindow(mDependentParent, true); |
|
214 |
|
215 return NS_OK; |
|
216 } |
|
217 |
|
218 NS_IMETHODIMP WebBrowserChrome::IsWindowModal(bool *_retval) |
|
219 { |
|
220 *_retval = false; |
|
221 return NS_ERROR_NOT_IMPLEMENTED; |
|
222 } |
|
223 |
|
224 NS_IMETHODIMP WebBrowserChrome::ExitModalEventLoop(nsresult aStatus) |
|
225 { |
|
226 mContinueModalLoop = false; |
|
227 return NS_OK; |
|
228 } |
|
229 |
|
230 //***************************************************************************** |
|
231 // WebBrowserChrome::nsIWebBrowserChromeFocus |
|
232 //***************************************************************************** |
|
233 |
|
234 NS_IMETHODIMP WebBrowserChrome::FocusNextElement() |
|
235 { |
|
236 return NS_ERROR_NOT_IMPLEMENTED; |
|
237 } |
|
238 |
|
239 NS_IMETHODIMP WebBrowserChrome::FocusPrevElement() |
|
240 { |
|
241 return NS_ERROR_NOT_IMPLEMENTED; |
|
242 } |
|
243 |
|
244 //***************************************************************************** |
|
245 // WebBrowserChrome::nsIWebProgressListener |
|
246 //***************************************************************************** |
|
247 |
|
248 NS_IMETHODIMP WebBrowserChrome::OnProgressChange(nsIWebProgress *progress, nsIRequest *request, |
|
249 int32_t curSelfProgress, int32_t maxSelfProgress, |
|
250 int32_t curTotalProgress, int32_t maxTotalProgress) |
|
251 { |
|
252 WebBrowserChromeUI::UpdateProgress(this, curTotalProgress, maxTotalProgress); |
|
253 return NS_OK; |
|
254 } |
|
255 |
|
256 NS_IMETHODIMP WebBrowserChrome::OnStateChange(nsIWebProgress *progress, nsIRequest *request, |
|
257 uint32_t progressStateFlags, nsresult status) |
|
258 { |
|
259 if ((progressStateFlags & STATE_START) && (progressStateFlags & STATE_IS_DOCUMENT)) |
|
260 { |
|
261 WebBrowserChromeUI::UpdateBusyState(this, true); |
|
262 } |
|
263 |
|
264 if ((progressStateFlags & STATE_STOP) && (progressStateFlags & STATE_IS_DOCUMENT)) |
|
265 { |
|
266 WebBrowserChromeUI::UpdateBusyState(this, false); |
|
267 WebBrowserChromeUI::UpdateProgress(this, 0, 100); |
|
268 WebBrowserChromeUI::UpdateStatusBarText(this, nullptr); |
|
269 ContentFinishedLoading(); |
|
270 } |
|
271 |
|
272 return NS_OK; |
|
273 } |
|
274 |
|
275 |
|
276 NS_IMETHODIMP WebBrowserChrome::OnLocationChange(nsIWebProgress* aWebProgress, |
|
277 nsIRequest* aRequest, |
|
278 nsIURI *location, |
|
279 uint32_t aFlags) |
|
280 { |
|
281 bool isSubFrameLoad = false; // Is this a subframe load |
|
282 if (aWebProgress) { |
|
283 nsCOMPtr<nsIDOMWindow> domWindow; |
|
284 nsCOMPtr<nsIDOMWindow> topDomWindow; |
|
285 aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); |
|
286 if (domWindow) { // Get root domWindow |
|
287 domWindow->GetTop(getter_AddRefs(topDomWindow)); |
|
288 } |
|
289 if (domWindow != topDomWindow) |
|
290 isSubFrameLoad = true; |
|
291 } |
|
292 if (!isSubFrameLoad) |
|
293 WebBrowserChromeUI::UpdateCurrentURI(this); |
|
294 return NS_OK; |
|
295 } |
|
296 |
|
297 NS_IMETHODIMP |
|
298 WebBrowserChrome::OnStatusChange(nsIWebProgress* aWebProgress, |
|
299 nsIRequest* aRequest, |
|
300 nsresult aStatus, |
|
301 const char16_t* aMessage) |
|
302 { |
|
303 WebBrowserChromeUI::UpdateStatusBarText(this, aMessage); |
|
304 return NS_OK; |
|
305 } |
|
306 |
|
307 |
|
308 |
|
309 NS_IMETHODIMP |
|
310 WebBrowserChrome::OnSecurityChange(nsIWebProgress *aWebProgress, |
|
311 nsIRequest *aRequest, |
|
312 uint32_t state) |
|
313 { |
|
314 return NS_OK; |
|
315 } |
|
316 |
|
317 //***************************************************************************** |
|
318 // WebBrowserChrome::nsISHistoryListener |
|
319 //***************************************************************************** |
|
320 |
|
321 NS_IMETHODIMP |
|
322 WebBrowserChrome::OnHistoryNewEntry(nsIURI * aNewURI) |
|
323 { |
|
324 return SendHistoryStatusMessage(aNewURI, "add"); |
|
325 } |
|
326 |
|
327 NS_IMETHODIMP |
|
328 WebBrowserChrome::OnHistoryGoBack(nsIURI * aBackURI, bool * aContinue) |
|
329 { |
|
330 // For now, let the operation continue |
|
331 *aContinue = true; |
|
332 return SendHistoryStatusMessage(aBackURI, "back"); |
|
333 } |
|
334 |
|
335 |
|
336 NS_IMETHODIMP |
|
337 WebBrowserChrome::OnHistoryGoForward(nsIURI * aForwardURI, bool * aContinue) |
|
338 { |
|
339 // For now, let the operation continue |
|
340 *aContinue = true; |
|
341 return SendHistoryStatusMessage(aForwardURI, "forward"); |
|
342 } |
|
343 |
|
344 |
|
345 NS_IMETHODIMP |
|
346 WebBrowserChrome::OnHistoryGotoIndex(int32_t aIndex, nsIURI * aGotoURI, bool * aContinue) |
|
347 { |
|
348 // For now, let the operation continue |
|
349 *aContinue = true; |
|
350 return SendHistoryStatusMessage(aGotoURI, "goto", aIndex); |
|
351 } |
|
352 |
|
353 NS_IMETHODIMP |
|
354 WebBrowserChrome::OnHistoryReload(nsIURI * aURI, uint32_t aReloadFlags, bool * aContinue) |
|
355 { |
|
356 // For now, let the operation continue |
|
357 *aContinue = true; |
|
358 return SendHistoryStatusMessage(aURI, "reload", 0 /* no info to pass here */, aReloadFlags); |
|
359 } |
|
360 |
|
361 NS_IMETHODIMP |
|
362 WebBrowserChrome::OnHistoryPurge(int32_t aNumEntries, bool *aContinue) |
|
363 { |
|
364 // For now let the operation continue |
|
365 *aContinue = false; |
|
366 return SendHistoryStatusMessage(nullptr, "purge", aNumEntries); |
|
367 } |
|
368 |
|
369 NS_IMETHODIMP |
|
370 WebBrowserChrome::OnHistoryReplaceEntry(int32_t aIndex) |
|
371 { |
|
372 return SendHistoryStatusMessage(nullptr, "replace", aIndex); |
|
373 } |
|
374 |
|
375 static void |
|
376 AppendIntToCString(int32_t info1, nsCString& aResult) |
|
377 { |
|
378 char intstr[10]; |
|
379 _snprintf(intstr, sizeof(intstr) - 1, "%i", info1); |
|
380 intstr[sizeof(intstr) - 1] = '\0'; |
|
381 aResult.Append(intstr); |
|
382 } |
|
383 |
|
384 nsresult |
|
385 WebBrowserChrome::SendHistoryStatusMessage(nsIURI * aURI, char * operation, int32_t info1, uint32_t aReloadFlags) |
|
386 { |
|
387 nsCString uriSpec; |
|
388 if (aURI) |
|
389 { |
|
390 aURI->GetSpec(uriSpec); |
|
391 } |
|
392 |
|
393 nsCString status; |
|
394 |
|
395 if(!(strcmp(operation, "back"))) |
|
396 { |
|
397 status.Assign("Going back to url: "); |
|
398 status.Append(uriSpec); |
|
399 } |
|
400 else if (!(strcmp(operation, "forward"))) |
|
401 { |
|
402 // Going forward. XXX Get string from a resource file |
|
403 status.Assign("Going forward to url: "); |
|
404 status.Append(uriSpec); |
|
405 } |
|
406 else if (!(strcmp(operation, "reload"))) |
|
407 { |
|
408 // Reloading. XXX Get string from a resource file |
|
409 if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY && |
|
410 aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE) |
|
411 { |
|
412 status.Assign("Reloading url, (bypassing proxy and cache): "); |
|
413 } |
|
414 else if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY) |
|
415 { |
|
416 status.Assign("Reloading url, (bypassing proxy): "); |
|
417 } |
|
418 else if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE) |
|
419 { |
|
420 status.Assign("Reloading url, (bypassing cache): "); |
|
421 } |
|
422 else |
|
423 { |
|
424 status.Assign("Reloading url, (normal): "); |
|
425 } |
|
426 status.Append(uriSpec); |
|
427 } |
|
428 else if (!(strcmp(operation, "add"))) |
|
429 { |
|
430 status.Assign(uriSpec); |
|
431 status.Append(" added to session History"); |
|
432 } |
|
433 else if (!(strcmp(operation, "goto"))) |
|
434 { |
|
435 status.Assign("Going to HistoryIndex: "); |
|
436 |
|
437 AppendIntToCString(info1, status); |
|
438 |
|
439 status.Append(" Url: "); |
|
440 status.Append(uriSpec); |
|
441 } |
|
442 else if (!(strcmp(operation, "purge"))) |
|
443 { |
|
444 AppendIntToCString(info1, status); |
|
445 status.Append(" purged from Session History"); |
|
446 } |
|
447 else if (!(strcmp(operation, "replace"))) |
|
448 { |
|
449 status.Assign("Replacing HistoryIndex: "); |
|
450 AppendIntToCString(info1, status); |
|
451 } |
|
452 |
|
453 nsString wstatus; |
|
454 NS_CStringToUTF16(status, NS_CSTRING_ENCODING_UTF8, wstatus); |
|
455 WebBrowserChromeUI::UpdateStatusBarText(this, wstatus.get()); |
|
456 |
|
457 return NS_OK; |
|
458 } |
|
459 |
|
460 void WebBrowserChrome::ContentFinishedLoading() |
|
461 { |
|
462 // if it was a chrome window and no one has already specified a size, |
|
463 // size to content |
|
464 if (mWebBrowser && !mSizeSet && |
|
465 (mChromeFlags & nsIWebBrowserChrome::CHROME_OPENAS_CHROME)) { |
|
466 nsCOMPtr<nsIDOMWindow> contentWin; |
|
467 mWebBrowser->GetContentDOMWindow(getter_AddRefs(contentWin)); |
|
468 if (contentWin) |
|
469 contentWin->SizeToContent(); |
|
470 WebBrowserChromeUI::ShowWindow(this, true); |
|
471 } |
|
472 } |
|
473 |
|
474 |
|
475 //***************************************************************************** |
|
476 // WebBrowserChrome::nsIEmbeddingSiteWindow |
|
477 //***************************************************************************** |
|
478 |
|
479 NS_IMETHODIMP WebBrowserChrome::SetDimensions(uint32_t aFlags, int32_t x, int32_t y, int32_t cx, int32_t cy) |
|
480 { |
|
481 return NS_ERROR_NOT_IMPLEMENTED; |
|
482 } |
|
483 |
|
484 NS_IMETHODIMP WebBrowserChrome::GetDimensions(uint32_t aFlags, int32_t *x, int32_t *y, int32_t *cx, int32_t *cy) |
|
485 { |
|
486 if (aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_POSITION) |
|
487 { |
|
488 *x = 0; |
|
489 *y = 0; |
|
490 } |
|
491 if (aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_SIZE_INNER || |
|
492 aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_SIZE_OUTER) |
|
493 { |
|
494 *cx = 0; |
|
495 *cy = 0; |
|
496 } |
|
497 return NS_ERROR_NOT_IMPLEMENTED; |
|
498 } |
|
499 |
|
500 /* void setFocus (); */ |
|
501 NS_IMETHODIMP WebBrowserChrome::SetFocus() |
|
502 { |
|
503 WebBrowserChromeUI::SetFocus(this); |
|
504 return NS_OK; |
|
505 } |
|
506 |
|
507 /* void blur (); */ |
|
508 NS_IMETHODIMP WebBrowserChrome::Blur() |
|
509 { |
|
510 return NS_ERROR_NOT_IMPLEMENTED; |
|
511 } |
|
512 |
|
513 /* attribute wstring title; */ |
|
514 NS_IMETHODIMP WebBrowserChrome::GetTitle(char16_t * *aTitle) |
|
515 { |
|
516 NS_ENSURE_ARG_POINTER(aTitle); |
|
517 |
|
518 *aTitle = nullptr; |
|
519 |
|
520 return NS_ERROR_NOT_IMPLEMENTED; |
|
521 } |
|
522 NS_IMETHODIMP WebBrowserChrome::SetTitle(const char16_t * aTitle) |
|
523 { |
|
524 return NS_ERROR_NOT_IMPLEMENTED; |
|
525 } |
|
526 |
|
527 /* attribute boolean visibility; */ |
|
528 NS_IMETHODIMP WebBrowserChrome::GetVisibility(bool * aVisibility) |
|
529 { |
|
530 NS_ENSURE_ARG_POINTER(aVisibility); |
|
531 *aVisibility = true; |
|
532 return NS_OK; |
|
533 } |
|
534 NS_IMETHODIMP WebBrowserChrome::SetVisibility(bool aVisibility) |
|
535 { |
|
536 return NS_OK; |
|
537 } |
|
538 |
|
539 /* attribute nativeSiteWindow siteWindow */ |
|
540 NS_IMETHODIMP WebBrowserChrome::GetSiteWindow(void * *aSiteWindow) |
|
541 { |
|
542 NS_ENSURE_ARG_POINTER(aSiteWindow); |
|
543 |
|
544 *aSiteWindow = mNativeWindow; |
|
545 return NS_OK; |
|
546 } |
|
547 |
|
548 |
|
549 //***************************************************************************** |
|
550 // WebBrowserChrome::nsIObserver |
|
551 //***************************************************************************** |
|
552 |
|
553 NS_IMETHODIMP WebBrowserChrome::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *someData) |
|
554 { |
|
555 nsresult rv = NS_OK; |
|
556 if (strcmp(aTopic, "profile-change-teardown") == 0) |
|
557 { |
|
558 // A profile change means death for this window |
|
559 WebBrowserChromeUI::Destroy(this); |
|
560 } |
|
561 return rv; |
|
562 } |
|
563 |
|
564 //***************************************************************************** |
|
565 // WebBrowserChrome::nsIContextMenuListener |
|
566 //***************************************************************************** |
|
567 |
|
568 /* void OnShowContextMenu (in unsigned long aContextFlags, in nsIDOMEvent aEvent, in nsIDOMNode aNode); */ |
|
569 NS_IMETHODIMP WebBrowserChrome::OnShowContextMenu(uint32_t aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode) |
|
570 { |
|
571 WebBrowserChromeUI::ShowContextMenu(this, aContextFlags, aEvent, aNode); |
|
572 return NS_OK; |
|
573 } |
|
574 |
|
575 //***************************************************************************** |
|
576 // WebBrowserChrome::nsITooltipListener |
|
577 //***************************************************************************** |
|
578 |
|
579 /* void OnShowTooltip (in long aXCoords, in long aYCoords, in wstring aTipText); */ |
|
580 NS_IMETHODIMP WebBrowserChrome::OnShowTooltip(int32_t aXCoords, int32_t aYCoords, const char16_t *aTipText) |
|
581 { |
|
582 WebBrowserChromeUI::ShowTooltip(this, aXCoords, aYCoords, aTipText); |
|
583 return NS_OK; |
|
584 } |
|
585 |
|
586 /* void OnHideTooltip (); */ |
|
587 NS_IMETHODIMP WebBrowserChrome::OnHideTooltip() |
|
588 { |
|
589 WebBrowserChromeUI::HideTooltip(this); |
|
590 return NS_OK; |
|
591 } |