1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/embedding/tests/winEmbed/WebBrowserChrome.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,591 @@ 1.4 +/* ***** BEGIN LICENSE BLOCK ***** 1.5 + * Version: Mozilla-sample-code 1.0 1.6 + * 1.7 + * Copyright (c) 2002 Netscape Communications Corporation and 1.8 + * other contributors 1.9 + * 1.10 + * Permission is hereby granted, free of charge, to any person obtaining a 1.11 + * copy of this Mozilla sample software and associated documentation files 1.12 + * (the "Software"), to deal in the Software without restriction, including 1.13 + * without limitation the rights to use, copy, modify, merge, publish, 1.14 + * distribute, sublicense, and/or sell copies of the Software, and to permit 1.15 + * persons to whom the Software is furnished to do so, subject to the 1.16 + * following conditions: 1.17 + * 1.18 + * The above copyright notice and this permission notice shall be included 1.19 + * in all copies or substantial portions of the Software. 1.20 + * 1.21 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1.22 + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1.23 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1.24 + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1.25 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1.26 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1.27 + * DEALINGS IN THE SOFTWARE. 1.28 + * 1.29 + * Contributor(s): 1.30 + * 1.31 + * ***** END LICENSE BLOCK ***** */ 1.32 + 1.33 +// Local includes 1.34 +#include "resource.h" 1.35 +#include "winEmbed.h" 1.36 +#include "WebBrowserChrome.h" 1.37 + 1.38 +// OS headers 1.39 +#include <stdio.h> 1.40 + 1.41 +// Frozen APIs 1.42 + 1.43 +#include "nsStringAPI.h" 1.44 +#include "nsIComponentManager.h" 1.45 +#include "nsIDOMWindow.h" 1.46 +#include "nsIInterfaceRequestor.h" 1.47 +#include "nsIRequest.h" 1.48 +#include "nsIURI.h" 1.49 +#include "nsIWebProgress.h" 1.50 +#include "nsCWebBrowser.h" 1.51 + 1.52 +// Glue APIs (not frozen, but safe to use because they are statically linked) 1.53 +#include "nsComponentManagerUtils.h" 1.54 + 1.55 +// NON-FROZEN APIS! 1.56 +#include "nsIWebNavigation.h" 1.57 + 1.58 +WebBrowserChrome::WebBrowserChrome() 1.59 +{ 1.60 + mNativeWindow = nullptr; 1.61 + mSizeSet = false; 1.62 +} 1.63 + 1.64 +WebBrowserChrome::~WebBrowserChrome() 1.65 +{ 1.66 + WebBrowserChromeUI::Destroyed(this); 1.67 +} 1.68 + 1.69 +nsresult WebBrowserChrome::CreateBrowser(int32_t aX, int32_t aY, 1.70 + int32_t aCX, int32_t aCY, 1.71 + nsIWebBrowser **aBrowser) 1.72 +{ 1.73 + NS_ENSURE_ARG_POINTER(aBrowser); 1.74 + *aBrowser = nullptr; 1.75 + 1.76 + mWebBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID); 1.77 + 1.78 + if (!mWebBrowser) 1.79 + return NS_ERROR_FAILURE; 1.80 + 1.81 + (void)mWebBrowser->SetContainerWindow(static_cast<nsIWebBrowserChrome*>(this)); 1.82 + 1.83 + nsCOMPtr<nsIBaseWindow> browserBaseWindow = do_QueryInterface(mWebBrowser); 1.84 + 1.85 + mNativeWindow = WebBrowserChromeUI::CreateNativeWindow(static_cast<nsIWebBrowserChrome*>(this)); 1.86 + 1.87 + if (!mNativeWindow) 1.88 + return NS_ERROR_FAILURE; 1.89 + 1.90 + browserBaseWindow->InitWindow( mNativeWindow, 1.91 + nullptr, 1.92 + aX, aY, aCX, aCY); 1.93 + browserBaseWindow->Create(); 1.94 + 1.95 + nsCOMPtr<nsIWebProgressListener> listener(static_cast<nsIWebProgressListener*>(this)); 1.96 + nsCOMPtr<nsIWeakReference> thisListener(do_GetWeakReference(listener)); 1.97 + (void)mWebBrowser->AddWebBrowserListener(thisListener, 1.98 + NS_GET_IID(nsIWebProgressListener)); 1.99 + 1.100 + // The window has been created. Now register for history notifications 1.101 + mWebBrowser->AddWebBrowserListener(thisListener, NS_GET_IID(nsISHistoryListener)); 1.102 + 1.103 + if (mWebBrowser) 1.104 + { 1.105 + *aBrowser = mWebBrowser; 1.106 + NS_ADDREF(*aBrowser); 1.107 + return NS_OK; 1.108 + } 1.109 + return NS_ERROR_FAILURE; 1.110 +} 1.111 + 1.112 +//***************************************************************************** 1.113 +// WebBrowserChrome::nsISupports 1.114 +//***************************************************************************** 1.115 + 1.116 +NS_IMPL_ADDREF(WebBrowserChrome) 1.117 +NS_IMPL_RELEASE(WebBrowserChrome) 1.118 + 1.119 +NS_INTERFACE_MAP_BEGIN(WebBrowserChrome) 1.120 + NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowserChrome) 1.121 + NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor) 1.122 + NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome) 1.123 + NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow) 1.124 + NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener) // optional 1.125 + NS_INTERFACE_MAP_ENTRY(nsISHistoryListener) 1.126 + NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) 1.127 + NS_INTERFACE_MAP_ENTRY(nsIObserver) 1.128 + NS_INTERFACE_MAP_ENTRY(nsIContextMenuListener) 1.129 + NS_INTERFACE_MAP_ENTRY(nsITooltipListener) 1.130 +NS_INTERFACE_MAP_END 1.131 + 1.132 +//***************************************************************************** 1.133 +// WebBrowserChrome::nsIInterfaceRequestor 1.134 +//***************************************************************************** 1.135 + 1.136 +NS_IMETHODIMP WebBrowserChrome::GetInterface(const nsIID &aIID, void** aInstancePtr) 1.137 +{ 1.138 + NS_ENSURE_ARG_POINTER(aInstancePtr); 1.139 + 1.140 + *aInstancePtr = 0; 1.141 + if (aIID.Equals(NS_GET_IID(nsIDOMWindow))) 1.142 + { 1.143 + if (mWebBrowser) 1.144 + { 1.145 + return mWebBrowser->GetContentDOMWindow((nsIDOMWindow **) aInstancePtr); 1.146 + } 1.147 + return NS_ERROR_NOT_INITIALIZED; 1.148 + } 1.149 + return QueryInterface(aIID, aInstancePtr); 1.150 +} 1.151 + 1.152 +//***************************************************************************** 1.153 +// WebBrowserChrome::nsIWebBrowserChrome 1.154 +//***************************************************************************** 1.155 + 1.156 +NS_IMETHODIMP WebBrowserChrome::SetStatus(uint32_t aType, const char16_t* aStatus) 1.157 +{ 1.158 + WebBrowserChromeUI::UpdateStatusBarText(this, aStatus); 1.159 + return NS_OK; 1.160 +} 1.161 + 1.162 +NS_IMETHODIMP WebBrowserChrome::GetWebBrowser(nsIWebBrowser** aWebBrowser) 1.163 +{ 1.164 + NS_ENSURE_ARG_POINTER(aWebBrowser); 1.165 + *aWebBrowser = mWebBrowser; 1.166 + NS_IF_ADDREF(*aWebBrowser); 1.167 + return NS_OK; 1.168 +} 1.169 + 1.170 +NS_IMETHODIMP WebBrowserChrome::SetWebBrowser(nsIWebBrowser* aWebBrowser) 1.171 +{ 1.172 + mWebBrowser = aWebBrowser; 1.173 + return NS_OK; 1.174 +} 1.175 + 1.176 +NS_IMETHODIMP WebBrowserChrome::GetChromeFlags(uint32_t* aChromeMask) 1.177 +{ 1.178 + *aChromeMask = mChromeFlags; 1.179 + return NS_OK; 1.180 +} 1.181 + 1.182 +NS_IMETHODIMP WebBrowserChrome::SetChromeFlags(uint32_t aChromeMask) 1.183 +{ 1.184 + mChromeFlags = aChromeMask; 1.185 + return NS_OK; 1.186 +} 1.187 + 1.188 +NS_IMETHODIMP WebBrowserChrome::DestroyBrowserWindow(void) 1.189 +{ 1.190 + WebBrowserChromeUI::Destroy(this); 1.191 + return NS_OK; 1.192 +} 1.193 + 1.194 + 1.195 +// IN: The desired browser client area dimensions. 1.196 +NS_IMETHODIMP WebBrowserChrome::SizeBrowserTo(int32_t aWidth, int32_t aHeight) 1.197 +{ 1.198 + /* This isn't exactly correct: we're setting the whole window to 1.199 + the size requested for the browser. At time of writing, though, 1.200 + it's fine and useful for winEmbed's purposes. */ 1.201 + WebBrowserChromeUI::SizeTo(this, aWidth, aHeight); 1.202 + mSizeSet = true; 1.203 + return NS_OK; 1.204 +} 1.205 + 1.206 + 1.207 +NS_IMETHODIMP WebBrowserChrome::ShowAsModal(void) 1.208 +{ 1.209 + if (mDependentParent) 1.210 + AppCallbacks::EnableChromeWindow(mDependentParent, false); 1.211 + 1.212 + mContinueModalLoop = true; 1.213 + AppCallbacks::RunEventLoop(mContinueModalLoop); 1.214 + 1.215 + if (mDependentParent) 1.216 + AppCallbacks::EnableChromeWindow(mDependentParent, true); 1.217 + 1.218 + return NS_OK; 1.219 +} 1.220 + 1.221 +NS_IMETHODIMP WebBrowserChrome::IsWindowModal(bool *_retval) 1.222 +{ 1.223 + *_retval = false; 1.224 + return NS_ERROR_NOT_IMPLEMENTED; 1.225 +} 1.226 + 1.227 +NS_IMETHODIMP WebBrowserChrome::ExitModalEventLoop(nsresult aStatus) 1.228 +{ 1.229 + mContinueModalLoop = false; 1.230 + return NS_OK; 1.231 +} 1.232 + 1.233 +//***************************************************************************** 1.234 +// WebBrowserChrome::nsIWebBrowserChromeFocus 1.235 +//***************************************************************************** 1.236 + 1.237 +NS_IMETHODIMP WebBrowserChrome::FocusNextElement() 1.238 +{ 1.239 + return NS_ERROR_NOT_IMPLEMENTED; 1.240 +} 1.241 + 1.242 +NS_IMETHODIMP WebBrowserChrome::FocusPrevElement() 1.243 +{ 1.244 + return NS_ERROR_NOT_IMPLEMENTED; 1.245 +} 1.246 + 1.247 +//***************************************************************************** 1.248 +// WebBrowserChrome::nsIWebProgressListener 1.249 +//***************************************************************************** 1.250 + 1.251 +NS_IMETHODIMP WebBrowserChrome::OnProgressChange(nsIWebProgress *progress, nsIRequest *request, 1.252 + int32_t curSelfProgress, int32_t maxSelfProgress, 1.253 + int32_t curTotalProgress, int32_t maxTotalProgress) 1.254 +{ 1.255 + WebBrowserChromeUI::UpdateProgress(this, curTotalProgress, maxTotalProgress); 1.256 + return NS_OK; 1.257 +} 1.258 + 1.259 +NS_IMETHODIMP WebBrowserChrome::OnStateChange(nsIWebProgress *progress, nsIRequest *request, 1.260 + uint32_t progressStateFlags, nsresult status) 1.261 +{ 1.262 + if ((progressStateFlags & STATE_START) && (progressStateFlags & STATE_IS_DOCUMENT)) 1.263 + { 1.264 + WebBrowserChromeUI::UpdateBusyState(this, true); 1.265 + } 1.266 + 1.267 + if ((progressStateFlags & STATE_STOP) && (progressStateFlags & STATE_IS_DOCUMENT)) 1.268 + { 1.269 + WebBrowserChromeUI::UpdateBusyState(this, false); 1.270 + WebBrowserChromeUI::UpdateProgress(this, 0, 100); 1.271 + WebBrowserChromeUI::UpdateStatusBarText(this, nullptr); 1.272 + ContentFinishedLoading(); 1.273 + } 1.274 + 1.275 + return NS_OK; 1.276 +} 1.277 + 1.278 + 1.279 +NS_IMETHODIMP WebBrowserChrome::OnLocationChange(nsIWebProgress* aWebProgress, 1.280 + nsIRequest* aRequest, 1.281 + nsIURI *location, 1.282 + uint32_t aFlags) 1.283 +{ 1.284 + bool isSubFrameLoad = false; // Is this a subframe load 1.285 + if (aWebProgress) { 1.286 + nsCOMPtr<nsIDOMWindow> domWindow; 1.287 + nsCOMPtr<nsIDOMWindow> topDomWindow; 1.288 + aWebProgress->GetDOMWindow(getter_AddRefs(domWindow)); 1.289 + if (domWindow) { // Get root domWindow 1.290 + domWindow->GetTop(getter_AddRefs(topDomWindow)); 1.291 + } 1.292 + if (domWindow != topDomWindow) 1.293 + isSubFrameLoad = true; 1.294 + } 1.295 + if (!isSubFrameLoad) 1.296 + WebBrowserChromeUI::UpdateCurrentURI(this); 1.297 + return NS_OK; 1.298 +} 1.299 + 1.300 +NS_IMETHODIMP 1.301 +WebBrowserChrome::OnStatusChange(nsIWebProgress* aWebProgress, 1.302 + nsIRequest* aRequest, 1.303 + nsresult aStatus, 1.304 + const char16_t* aMessage) 1.305 +{ 1.306 + WebBrowserChromeUI::UpdateStatusBarText(this, aMessage); 1.307 + return NS_OK; 1.308 +} 1.309 + 1.310 + 1.311 + 1.312 +NS_IMETHODIMP 1.313 +WebBrowserChrome::OnSecurityChange(nsIWebProgress *aWebProgress, 1.314 + nsIRequest *aRequest, 1.315 + uint32_t state) 1.316 +{ 1.317 + return NS_OK; 1.318 +} 1.319 + 1.320 +//***************************************************************************** 1.321 +// WebBrowserChrome::nsISHistoryListener 1.322 +//***************************************************************************** 1.323 + 1.324 +NS_IMETHODIMP 1.325 +WebBrowserChrome::OnHistoryNewEntry(nsIURI * aNewURI) 1.326 +{ 1.327 + return SendHistoryStatusMessage(aNewURI, "add"); 1.328 +} 1.329 + 1.330 +NS_IMETHODIMP 1.331 +WebBrowserChrome::OnHistoryGoBack(nsIURI * aBackURI, bool * aContinue) 1.332 +{ 1.333 + // For now, let the operation continue 1.334 + *aContinue = true; 1.335 + return SendHistoryStatusMessage(aBackURI, "back"); 1.336 +} 1.337 + 1.338 + 1.339 +NS_IMETHODIMP 1.340 +WebBrowserChrome::OnHistoryGoForward(nsIURI * aForwardURI, bool * aContinue) 1.341 +{ 1.342 + // For now, let the operation continue 1.343 + *aContinue = true; 1.344 + return SendHistoryStatusMessage(aForwardURI, "forward"); 1.345 +} 1.346 + 1.347 + 1.348 +NS_IMETHODIMP 1.349 +WebBrowserChrome::OnHistoryGotoIndex(int32_t aIndex, nsIURI * aGotoURI, bool * aContinue) 1.350 +{ 1.351 + // For now, let the operation continue 1.352 + *aContinue = true; 1.353 + return SendHistoryStatusMessage(aGotoURI, "goto", aIndex); 1.354 +} 1.355 + 1.356 +NS_IMETHODIMP 1.357 +WebBrowserChrome::OnHistoryReload(nsIURI * aURI, uint32_t aReloadFlags, bool * aContinue) 1.358 +{ 1.359 + // For now, let the operation continue 1.360 + *aContinue = true; 1.361 + return SendHistoryStatusMessage(aURI, "reload", 0 /* no info to pass here */, aReloadFlags); 1.362 +} 1.363 + 1.364 +NS_IMETHODIMP 1.365 +WebBrowserChrome::OnHistoryPurge(int32_t aNumEntries, bool *aContinue) 1.366 +{ 1.367 + // For now let the operation continue 1.368 + *aContinue = false; 1.369 + return SendHistoryStatusMessage(nullptr, "purge", aNumEntries); 1.370 +} 1.371 + 1.372 +NS_IMETHODIMP 1.373 +WebBrowserChrome::OnHistoryReplaceEntry(int32_t aIndex) 1.374 +{ 1.375 + return SendHistoryStatusMessage(nullptr, "replace", aIndex); 1.376 +} 1.377 + 1.378 +static void 1.379 +AppendIntToCString(int32_t info1, nsCString& aResult) 1.380 +{ 1.381 + char intstr[10]; 1.382 + _snprintf(intstr, sizeof(intstr) - 1, "%i", info1); 1.383 + intstr[sizeof(intstr) - 1] = '\0'; 1.384 + aResult.Append(intstr); 1.385 +} 1.386 + 1.387 +nsresult 1.388 +WebBrowserChrome::SendHistoryStatusMessage(nsIURI * aURI, char * operation, int32_t info1, uint32_t aReloadFlags) 1.389 +{ 1.390 + nsCString uriSpec; 1.391 + if (aURI) 1.392 + { 1.393 + aURI->GetSpec(uriSpec); 1.394 + } 1.395 + 1.396 + nsCString status; 1.397 + 1.398 + if(!(strcmp(operation, "back"))) 1.399 + { 1.400 + status.Assign("Going back to url: "); 1.401 + status.Append(uriSpec); 1.402 + } 1.403 + else if (!(strcmp(operation, "forward"))) 1.404 + { 1.405 + // Going forward. XXX Get string from a resource file 1.406 + status.Assign("Going forward to url: "); 1.407 + status.Append(uriSpec); 1.408 + } 1.409 + else if (!(strcmp(operation, "reload"))) 1.410 + { 1.411 + // Reloading. XXX Get string from a resource file 1.412 + if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY && 1.413 + aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE) 1.414 + { 1.415 + status.Assign("Reloading url, (bypassing proxy and cache): "); 1.416 + } 1.417 + else if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_PROXY) 1.418 + { 1.419 + status.Assign("Reloading url, (bypassing proxy): "); 1.420 + } 1.421 + else if (aReloadFlags & nsIWebNavigation::LOAD_FLAGS_BYPASS_CACHE) 1.422 + { 1.423 + status.Assign("Reloading url, (bypassing cache): "); 1.424 + } 1.425 + else 1.426 + { 1.427 + status.Assign("Reloading url, (normal): "); 1.428 + } 1.429 + status.Append(uriSpec); 1.430 + } 1.431 + else if (!(strcmp(operation, "add"))) 1.432 + { 1.433 + status.Assign(uriSpec); 1.434 + status.Append(" added to session History"); 1.435 + } 1.436 + else if (!(strcmp(operation, "goto"))) 1.437 + { 1.438 + status.Assign("Going to HistoryIndex: "); 1.439 + 1.440 + AppendIntToCString(info1, status); 1.441 + 1.442 + status.Append(" Url: "); 1.443 + status.Append(uriSpec); 1.444 + } 1.445 + else if (!(strcmp(operation, "purge"))) 1.446 + { 1.447 + AppendIntToCString(info1, status); 1.448 + status.Append(" purged from Session History"); 1.449 + } 1.450 + else if (!(strcmp(operation, "replace"))) 1.451 + { 1.452 + status.Assign("Replacing HistoryIndex: "); 1.453 + AppendIntToCString(info1, status); 1.454 + } 1.455 + 1.456 + nsString wstatus; 1.457 + NS_CStringToUTF16(status, NS_CSTRING_ENCODING_UTF8, wstatus); 1.458 + WebBrowserChromeUI::UpdateStatusBarText(this, wstatus.get()); 1.459 + 1.460 + return NS_OK; 1.461 +} 1.462 + 1.463 +void WebBrowserChrome::ContentFinishedLoading() 1.464 +{ 1.465 + // if it was a chrome window and no one has already specified a size, 1.466 + // size to content 1.467 + if (mWebBrowser && !mSizeSet && 1.468 + (mChromeFlags & nsIWebBrowserChrome::CHROME_OPENAS_CHROME)) { 1.469 + nsCOMPtr<nsIDOMWindow> contentWin; 1.470 + mWebBrowser->GetContentDOMWindow(getter_AddRefs(contentWin)); 1.471 + if (contentWin) 1.472 + contentWin->SizeToContent(); 1.473 + WebBrowserChromeUI::ShowWindow(this, true); 1.474 + } 1.475 +} 1.476 + 1.477 + 1.478 +//***************************************************************************** 1.479 +// WebBrowserChrome::nsIEmbeddingSiteWindow 1.480 +//***************************************************************************** 1.481 + 1.482 +NS_IMETHODIMP WebBrowserChrome::SetDimensions(uint32_t aFlags, int32_t x, int32_t y, int32_t cx, int32_t cy) 1.483 +{ 1.484 + return NS_ERROR_NOT_IMPLEMENTED; 1.485 +} 1.486 + 1.487 +NS_IMETHODIMP WebBrowserChrome::GetDimensions(uint32_t aFlags, int32_t *x, int32_t *y, int32_t *cx, int32_t *cy) 1.488 +{ 1.489 + if (aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_POSITION) 1.490 + { 1.491 + *x = 0; 1.492 + *y = 0; 1.493 + } 1.494 + if (aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_SIZE_INNER || 1.495 + aFlags & nsIEmbeddingSiteWindow::DIM_FLAGS_SIZE_OUTER) 1.496 + { 1.497 + *cx = 0; 1.498 + *cy = 0; 1.499 + } 1.500 + return NS_ERROR_NOT_IMPLEMENTED; 1.501 +} 1.502 + 1.503 +/* void setFocus (); */ 1.504 +NS_IMETHODIMP WebBrowserChrome::SetFocus() 1.505 +{ 1.506 + WebBrowserChromeUI::SetFocus(this); 1.507 + return NS_OK; 1.508 +} 1.509 + 1.510 +/* void blur (); */ 1.511 +NS_IMETHODIMP WebBrowserChrome::Blur() 1.512 +{ 1.513 + return NS_ERROR_NOT_IMPLEMENTED; 1.514 +} 1.515 + 1.516 +/* attribute wstring title; */ 1.517 +NS_IMETHODIMP WebBrowserChrome::GetTitle(char16_t * *aTitle) 1.518 +{ 1.519 + NS_ENSURE_ARG_POINTER(aTitle); 1.520 + 1.521 + *aTitle = nullptr; 1.522 + 1.523 + return NS_ERROR_NOT_IMPLEMENTED; 1.524 +} 1.525 +NS_IMETHODIMP WebBrowserChrome::SetTitle(const char16_t * aTitle) 1.526 +{ 1.527 + return NS_ERROR_NOT_IMPLEMENTED; 1.528 +} 1.529 + 1.530 +/* attribute boolean visibility; */ 1.531 +NS_IMETHODIMP WebBrowserChrome::GetVisibility(bool * aVisibility) 1.532 +{ 1.533 + NS_ENSURE_ARG_POINTER(aVisibility); 1.534 + *aVisibility = true; 1.535 + return NS_OK; 1.536 +} 1.537 +NS_IMETHODIMP WebBrowserChrome::SetVisibility(bool aVisibility) 1.538 +{ 1.539 + return NS_OK; 1.540 +} 1.541 + 1.542 +/* attribute nativeSiteWindow siteWindow */ 1.543 +NS_IMETHODIMP WebBrowserChrome::GetSiteWindow(void * *aSiteWindow) 1.544 +{ 1.545 + NS_ENSURE_ARG_POINTER(aSiteWindow); 1.546 + 1.547 + *aSiteWindow = mNativeWindow; 1.548 + return NS_OK; 1.549 +} 1.550 + 1.551 + 1.552 +//***************************************************************************** 1.553 +// WebBrowserChrome::nsIObserver 1.554 +//***************************************************************************** 1.555 + 1.556 +NS_IMETHODIMP WebBrowserChrome::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *someData) 1.557 +{ 1.558 + nsresult rv = NS_OK; 1.559 + if (strcmp(aTopic, "profile-change-teardown") == 0) 1.560 + { 1.561 + // A profile change means death for this window 1.562 + WebBrowserChromeUI::Destroy(this); 1.563 + } 1.564 + return rv; 1.565 +} 1.566 + 1.567 +//***************************************************************************** 1.568 +// WebBrowserChrome::nsIContextMenuListener 1.569 +//***************************************************************************** 1.570 + 1.571 +/* void OnShowContextMenu (in unsigned long aContextFlags, in nsIDOMEvent aEvent, in nsIDOMNode aNode); */ 1.572 +NS_IMETHODIMP WebBrowserChrome::OnShowContextMenu(uint32_t aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode) 1.573 +{ 1.574 + WebBrowserChromeUI::ShowContextMenu(this, aContextFlags, aEvent, aNode); 1.575 + return NS_OK; 1.576 +} 1.577 + 1.578 +//***************************************************************************** 1.579 +// WebBrowserChrome::nsITooltipListener 1.580 +//***************************************************************************** 1.581 + 1.582 +/* void OnShowTooltip (in long aXCoords, in long aYCoords, in wstring aTipText); */ 1.583 +NS_IMETHODIMP WebBrowserChrome::OnShowTooltip(int32_t aXCoords, int32_t aYCoords, const char16_t *aTipText) 1.584 +{ 1.585 + WebBrowserChromeUI::ShowTooltip(this, aXCoords, aYCoords, aTipText); 1.586 + return NS_OK; 1.587 +} 1.588 + 1.589 +/* void OnHideTooltip (); */ 1.590 +NS_IMETHODIMP WebBrowserChrome::OnHideTooltip() 1.591 +{ 1.592 + WebBrowserChromeUI::HideTooltip(this); 1.593 + return NS_OK; 1.594 +}