Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(719)

Side by Side Diff: third_party/WebKit/Source/core/frame/LocalFrame.h

Issue 2883033003: Propagate inert state to OOPIFs when a modal dialog is active (Closed)
Patch Set: Restore earlier approach + UpdateDistribution() Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999-2001 Lars Knoll <knoll@kde.org> 3 * 1999-2001 Lars Knoll <knoll@kde.org>
4 * 1999-2001 Antti Koivisto <koivisto@kde.org> 4 * 1999-2001 Antti Koivisto <koivisto@kde.org>
5 * 2000-2001 Simon Hausmann <hausmann@kde.org> 5 * 2000-2001 Simon Hausmann <hausmann@kde.org>
6 * 2000-2001 Dirk Mueller <mueller@kde.org> 6 * 2000-2001 Dirk Mueller <mueller@kde.org>
7 * 2000 Stefan Schimanski <1Stein@gmx.de> 7 * 2000 Stefan Schimanski <1Stein@gmx.de>
8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
9 * reserved. 9 * reserved.
10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 UserGestureStatus) override; 118 UserGestureStatus) override;
119 void Navigate(const FrameLoadRequest&) override; 119 void Navigate(const FrameLoadRequest&) override;
120 void Reload(FrameLoadType, ClientRedirectPolicy) override; 120 void Reload(FrameLoadType, ClientRedirectPolicy) override;
121 void Detach(FrameDetachType) override; 121 void Detach(FrameDetachType) override;
122 bool ShouldClose() override; 122 bool ShouldClose() override;
123 SecurityContext* GetSecurityContext() const override; 123 SecurityContext* GetSecurityContext() const override;
124 void PrintNavigationErrorMessage(const Frame&, const char* reason) override; 124 void PrintNavigationErrorMessage(const Frame&, const char* reason) override;
125 void PrintNavigationWarning(const String&) override; 125 void PrintNavigationWarning(const String&) override;
126 bool PrepareForCommit() override; 126 bool PrepareForCommit() override;
127 void DidChangeVisibilityState() override; 127 void DidChangeVisibilityState() override;
128 // This sets the is_inert_ flag and also recurses through this frame's
129 // subtree, updating the inert bit on all descendant frames.
130 void SetIsInert(bool) override;
128 131
129 void DetachChildren(); 132 void DetachChildren();
130 void DocumentAttached(); 133 void DocumentAttached();
131 134
132 Frame* FindFrameForNavigation(const AtomicString& name, 135 Frame* FindFrameForNavigation(const AtomicString& name,
133 LocalFrame& active_frame); 136 LocalFrame& active_frame);
134 137
135 // Note: these two functions are not virtual but intentionally shadow the 138 // Note: these two functions are not virtual but intentionally shadow the
136 // corresponding method in the Frame base class to return the 139 // corresponding method in the Frame base class to return the
137 // LocalFrame-specific subclass. 140 // LocalFrame-specific subclass.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 248
246 PerformanceMonitor* GetPerformanceMonitor() { return performance_monitor_; } 249 PerformanceMonitor* GetPerformanceMonitor() { return performance_monitor_; }
247 250
248 // Convenience function to allow loading image placeholders for the request if 251 // Convenience function to allow loading image placeholders for the request if
249 // either the flag in Settings() for using image placeholders is set, or if 252 // either the flag in Settings() for using image placeholders is set, or if
250 // the embedder decides that Client Lo-Fi should be used for this request. 253 // the embedder decides that Client Lo-Fi should be used for this request.
251 void MaybeAllowImagePlaceholder(FetchParameters&) const; 254 void MaybeAllowImagePlaceholder(FetchParameters&) const;
252 255
253 std::unique_ptr<WebURLLoader> CreateURLLoader(); 256 std::unique_ptr<WebURLLoader> CreateURLLoader();
254 257
258 bool IsInert() const { return is_inert_; }
alexmos 2017/06/16 02:17:58 Is this used anywhere? I might've missed it, but
kenrb 2017/06/19 19:26:23 Yes, in Node::IsInert().
alexmos 2017/06/20 18:46:10 Acknowledged.
259
255 using FrameInitCallback = void (*)(LocalFrame*); 260 using FrameInitCallback = void (*)(LocalFrame*);
256 // Allows for the registration of a callback that is invoked whenever a new 261 // Allows for the registration of a callback that is invoked whenever a new
257 // LocalFrame is initialized. Callbacks are executed in the order that they 262 // LocalFrame is initialized. Callbacks are executed in the order that they
258 // were added using registerInitializationCallback, and there are no checks 263 // were added using registerInitializationCallback, and there are no checks
259 // for adding a callback multiple times. 264 // for adding a callback multiple times.
260 static void RegisterInitializationCallback(FrameInitCallback); 265 static void RegisterInitializationCallback(FrameInitCallback);
261 266
262 // If the frame hosts a PluginDocument, this method returns the 267 // If the frame hosts a PluginDocument, this method returns the
263 // WebPluginContainerBase that hosts the plugin. If the provided node is a 268 // WebPluginContainerBase that hosts the plugin. If the provided node is a
264 // plugin, then it returns its WebPluginContainerBase. Otherwise, uses the 269 // plugin, then it returns its WebPluginContainerBase. Otherwise, uses the
(...skipping 20 matching lines...) Expand all
285 // Intentionally private to prevent redundant checks when the type is 290 // Intentionally private to prevent redundant checks when the type is
286 // already LocalFrame. 291 // already LocalFrame.
287 bool IsLocalFrame() const override { return true; } 292 bool IsLocalFrame() const override { return true; }
288 bool IsRemoteFrame() const override { return false; } 293 bool IsRemoteFrame() const override { return false; }
289 294
290 void EnableNavigation() { --navigation_disable_count_; } 295 void EnableNavigation() { --navigation_disable_count_; }
291 void DisableNavigation() { ++navigation_disable_count_; } 296 void DisableNavigation() { ++navigation_disable_count_; }
292 297
293 bool CanNavigateWithoutFramebusting(const Frame&, String& error_reason); 298 bool CanNavigateWithoutFramebusting(const Frame&, String& error_reason);
294 299
300 void PropagateInertToChildFrames();
301
295 std::unique_ptr<WebFrameScheduler> frame_scheduler_; 302 std::unique_ptr<WebFrameScheduler> frame_scheduler_;
296 303
297 mutable FrameLoader loader_; 304 mutable FrameLoader loader_;
298 Member<NavigationScheduler> navigation_scheduler_; 305 Member<NavigationScheduler> navigation_scheduler_;
299 306
300 // Cleared by LocalFrame::detach(), so as to keep the observable lifespan 307 // Cleared by LocalFrame::detach(), so as to keep the observable lifespan
301 // of LocalFrame::view(). 308 // of LocalFrame::view().
302 Member<LocalFrameView> view_; 309 Member<LocalFrameView> view_;
303 // Usually 0. Non-null if this is the top frame of PagePopup. 310 // Usually 0. Non-null if this is the top frame of PagePopup.
304 Member<Element> page_popup_owner_; 311 Member<Element> page_popup_owner_;
305 312
306 const Member<ScriptController> script_controller_; 313 const Member<ScriptController> script_controller_;
307 const Member<Editor> editor_; 314 const Member<Editor> editor_;
308 const Member<SpellChecker> spell_checker_; 315 const Member<SpellChecker> spell_checker_;
309 const Member<FrameSelection> selection_; 316 const Member<FrameSelection> selection_;
310 const Member<EventHandler> event_handler_; 317 const Member<EventHandler> event_handler_;
311 const Member<FrameConsole> console_; 318 const Member<FrameConsole> console_;
312 const Member<InputMethodController> input_method_controller_; 319 const Member<InputMethodController> input_method_controller_;
313 320
314 int navigation_disable_count_; 321 int navigation_disable_count_;
315 322
316 float page_zoom_factor_; 323 float page_zoom_factor_;
317 float text_zoom_factor_; 324 float text_zoom_factor_;
318 325
319 bool in_view_source_mode_; 326 bool in_view_source_mode_;
320 327
328 bool is_inert_;
329
321 Member<CoreProbeSink> probe_sink_; 330 Member<CoreProbeSink> probe_sink_;
322 Member<PerformanceMonitor> performance_monitor_; 331 Member<PerformanceMonitor> performance_monitor_;
323 332
324 InterfaceProvider* const interface_provider_; 333 InterfaceProvider* const interface_provider_;
325 InterfaceRegistry* const interface_registry_; 334 InterfaceRegistry* const interface_registry_;
326 335
327 IntRect remote_viewport_intersection_; 336 IntRect remote_viewport_intersection_;
328 Member<FrameResourceCoordinator> frame_resource_coordinator_; 337 Member<FrameResourceCoordinator> frame_resource_coordinator_;
329 }; 338 };
330 339
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 explicit ScopedFrameBlamer(LocalFrame*); 429 explicit ScopedFrameBlamer(LocalFrame*);
421 ~ScopedFrameBlamer(); 430 ~ScopedFrameBlamer();
422 431
423 private: 432 private:
424 Member<LocalFrame> frame_; 433 Member<LocalFrame> frame_;
425 }; 434 };
426 435
427 } // namespace blink 436 } // namespace blink
428 437
429 #endif // LocalFrame_h 438 #endif // LocalFrame_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698