  template<unsigned type>
  bool shouldInvalidateNodeListCachesForAttr(const HeapHashSet<WeakMember<const LiveNodeListBase>> nodeLists[], const QualifiedName& attrName)
  {
-@@ -6002,6 +6157,7 @@ DEFINE_TRACE(Document)
+@@ -6002,6 +6160,7 @@ DEFINE_TRACE(Document)
      visitor->trace(m_intersectionObserverData);
      visitor->trace(m_snapCoordinator);
      visitor->trace(m_resizeObserverController);

 void Document::enqueueUniqueAnimationFrameEvent(Event* event)
 {
     ensureScriptedAnimationController().enqueuePerFrameEvent(event);
@@ -5802,6 +5818,145 @@ bool Document::hasFocus() const
     return page() && page()->focusController().isDocumentFocused(*this);
 }
 
+
+void Document::validIronframe(){
+    m_frame->loader().client()->ironframeOrigin(this->origin().ascii());
+    m_frame->loader().client()->validIronframe();
+    
+    // Set attribute.
+    //this->documentElement()->setAttribute("requestVisibility", "1", ASSERT_NO_EXCEPTION);
+}
+
+void Document::invalidIronframe(){
+    m_frame->loader().client()->invalidIronframe();
+    // Set attribute.
+    //this->documentElement()->setAttribute("requestVisibility", "1", ASSERT_NO_EXCEPTION);
+}
+
+

 
   // Indicates whether the WebContents is being captured (e.g., for screenshots
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 7c13c18..e99dd22 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4185,6 +4185,17 @@ void RenderFrameImpl::didLoadResourceFromMemoryCache(
