summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwin7-7 <win7-7@users.noreply.github.com>2019-07-14 23:08:23 +0300
committerwin7-7 <win7-7@users.noreply.github.com>2019-07-14 23:08:23 +0300
commit5e416ec22dc018a953d4f1b22ea2dac13cc83a32 (patch)
treed53630856503013c12ce8ddae1fa2b915ae120e6
parent0f0227150d27b65a3d1caf318c088409686b5d1c (diff)
downloadaura-central-5e416ec22dc018a953d4f1b22ea2dac13cc83a32.tar.gz
Dispatch a PluginRemoved event for actual plugins, not images/unknown/iframe-type <objects>
If a page uses or removes many <object> elements which are not actually plugins, loading the page goes to a crawl because UXP recalculates the plugin UI every time. Only dispatch a PluginRemoved event for actual plugins.
-rw-r--r--dom/base/nsObjectLoadingContent.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp
index c1b732258..3c850c4cd 100644
--- a/dom/base/nsObjectLoadingContent.cpp
+++ b/dom/base/nsObjectLoadingContent.cpp
@@ -715,11 +715,13 @@ nsObjectLoadingContent::UnbindFromTree(bool aDeep, bool aNullParent)
/// would keep the docshell around, but trash the frameloader
UnloadObject();
}
- nsIDocument* doc = thisContent->GetComposedDoc();
- if (doc && doc->IsActive()) {
+ if (mType == eType_Plugin) {
+ nsIDocument* doc = thisContent->GetComposedDoc();
+ if (doc && doc->IsActive()) {
nsCOMPtr<nsIRunnable> ev = new nsSimplePluginEvent(doc,
NS_LITERAL_STRING("PluginRemoved"));
NS_DispatchToCurrentThread(ev);
+ }
}
}