зеркало из https://github.com/mozilla/pjs.git
Bug 340841. Infinite loop with some plugins when screen reader is runnng -- empty tabs keep opening. r=biesi, sr=jst
This commit is contained in:
Родитель
86945155bc
Коммит
107e12ab56
|
@ -41,12 +41,6 @@
|
||||||
#include "nsServiceManagerUtils.h"
|
#include "nsServiceManagerUtils.h"
|
||||||
#include "nsIDocumentLoaderFactory.h"
|
#include "nsIDocumentLoaderFactory.h"
|
||||||
#include "nsIPluginManager.h"
|
#include "nsIPluginManager.h"
|
||||||
#include "nsILookAndFeel.h"
|
|
||||||
#include "nsWidgetsCID.h"
|
|
||||||
#include "nsIMIMEService.h"
|
|
||||||
#include "nsIMIMEInfo.h"
|
|
||||||
|
|
||||||
static NS_DEFINE_CID(kLookAndFeelCID, NS_LOOKANDFEEL_CID);
|
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS1(nsWebNavigationInfo, nsIWebNavigationInfo)
|
NS_IMPL_ISUPPORTS1(nsWebNavigationInfo, nsIWebNavigationInfo)
|
||||||
|
|
||||||
|
@ -149,37 +143,6 @@ nsWebNavigationInfo::IsTypeSupportedInternal(const nsCString& aType,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (value.EqualsLiteral(PLUGIN_DLF_CONTRACT)) {
|
else if (value.EqualsLiteral(PLUGIN_DLF_CONTRACT)) {
|
||||||
#ifdef ACCESSIBILITY
|
|
||||||
// If a screen reader is running, prefer external handlers over plugins
|
|
||||||
// because they are better at dealing with accessibility -- they don't
|
|
||||||
// have the keyboard navigation problems and are more likely to expose
|
|
||||||
// their content via MSAA.
|
|
||||||
// XXX Eventually we will remove this once the major content types are as
|
|
||||||
// screen reader accessible in plugins as in external apps.
|
|
||||||
nsCOMPtr<nsILookAndFeel> lookAndFeel = do_GetService(kLookAndFeelCID);
|
|
||||||
if (lookAndFeel) {
|
|
||||||
PRInt32 isScreenReaderActive;
|
|
||||||
lookAndFeel->GetMetric(nsILookAndFeel::eMetric_IsScreenReaderActive,
|
|
||||||
isScreenReaderActive);
|
|
||||||
if (isScreenReaderActive) {
|
|
||||||
nsCOMPtr<nsIMIMEService> mimeService(do_GetService("@mozilla.org/mime;1"));
|
|
||||||
if (mimeService) {
|
|
||||||
nsCOMPtr<nsIMIMEInfo> mimeInfo;
|
|
||||||
mimeService->GetFromTypeAndExtension(aType, EmptyCString(),
|
|
||||||
getter_AddRefs(mimeInfo));
|
|
||||||
if (mimeInfo) {
|
|
||||||
PRBool hasDefaultHandler;
|
|
||||||
mimeInfo->GetHasDefaultHandler(&hasDefaultHandler);
|
|
||||||
if (hasDefaultHandler) {
|
|
||||||
// External app exists to handle this type, so use it instead of PLUGIN
|
|
||||||
*aIsSupported = nsIWebNavigationInfo::UNSUPPORTED;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
*aIsSupported = nsIWebNavigationInfo::PLUGIN;
|
*aIsSupported = nsIWebNavigationInfo::PLUGIN;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче