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

Side by Side Diff: Source/core/frame/LocalDOMWindow.cpp

Issue 1126253007: Block modal dialogs inside sandboxes. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/SandboxFlags.h ('k') | Source/platform/RuntimeEnabledFeatures.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 19 matching lines...) Expand all
30 #include "bindings/core/v8/ScriptController.h" 30 #include "bindings/core/v8/ScriptController.h"
31 #include "core/css/CSSComputedStyleDeclaration.h" 31 #include "core/css/CSSComputedStyleDeclaration.h"
32 #include "core/css/CSSRuleList.h" 32 #include "core/css/CSSRuleList.h"
33 #include "core/css/DOMWindowCSS.h" 33 #include "core/css/DOMWindowCSS.h"
34 #include "core/css/MediaQueryList.h" 34 #include "core/css/MediaQueryList.h"
35 #include "core/css/MediaQueryMatcher.h" 35 #include "core/css/MediaQueryMatcher.h"
36 #include "core/css/StyleMedia.h" 36 #include "core/css/StyleMedia.h"
37 #include "core/css/resolver/StyleResolver.h" 37 #include "core/css/resolver/StyleResolver.h"
38 #include "core/dom/DOMImplementation.h" 38 #include "core/dom/DOMImplementation.h"
39 #include "core/dom/FrameRequestCallback.h" 39 #include "core/dom/FrameRequestCallback.h"
40 #include "core/dom/SandboxFlags.h"
40 #include "core/editing/Editor.h" 41 #include "core/editing/Editor.h"
41 #include "core/events/DOMWindowEventQueue.h" 42 #include "core/events/DOMWindowEventQueue.h"
42 #include "core/events/HashChangeEvent.h" 43 #include "core/events/HashChangeEvent.h"
43 #include "core/events/MessageEvent.h" 44 #include "core/events/MessageEvent.h"
44 #include "core/events/PageTransitionEvent.h" 45 #include "core/events/PageTransitionEvent.h"
45 #include "core/events/PopStateEvent.h" 46 #include "core/events/PopStateEvent.h"
46 #include "core/frame/BarProp.h" 47 #include "core/frame/BarProp.h"
47 #include "core/frame/Console.h" 48 #include "core/frame/Console.h"
48 #include "core/frame/EventHandlerRegistry.h" 49 #include "core/frame/EventHandlerRegistry.h"
49 #include "core/frame/FrameConsole.h" 50 #include "core/frame/FrameConsole.h"
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 782
782 void LocalDOMWindow::print() 783 void LocalDOMWindow::print()
783 { 784 {
784 if (!frame()) 785 if (!frame())
785 return; 786 return;
786 787
787 FrameHost* host = frame()->host(); 788 FrameHost* host = frame()->host();
788 if (!host) 789 if (!host)
789 return; 790 return;
790 791
792 if (frame()->document()->isSandboxed(SandboxModals)) {
Yoav Weiss 2015/05/18 11:28:29 Where is this flag set? I see it defined, but it's
793 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
794 if (RuntimeEnabledFeatures::sandboxBlocksModalsEnabled())
795 return;
796 }
797
791 if (frame()->isLoading()) { 798 if (frame()->isLoading()) {
792 m_shouldPrintWhenFinishedLoading = true; 799 m_shouldPrintWhenFinishedLoading = true;
793 return; 800 return;
794 } 801 }
795 m_shouldPrintWhenFinishedLoading = false; 802 m_shouldPrintWhenFinishedLoading = false;
796 host->chrome().print(frame()); 803 host->chrome().print(frame());
797
798 if (frame()->document()->sandboxFlags())
799 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
800 } 804 }
801 805
802 void LocalDOMWindow::stop() 806 void LocalDOMWindow::stop()
803 { 807 {
804 if (!frame()) 808 if (!frame())
805 return; 809 return;
806 frame()->loader().stopAllLoaders(); 810 frame()->loader().stopAllLoaders();
807 } 811 }
808 812
809 void LocalDOMWindow::alert(const String& message) 813 void LocalDOMWindow::alert(const String& message)
810 { 814 {
811 if (!frame()) 815 if (!frame())
812 return; 816 return;
813 817
818 if (frame()->document()->isSandboxed(SandboxModals)) {
819 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
820 if (RuntimeEnabledFeatures::sandboxBlocksModalsEnabled())
821 return;
822 }
823
814 frame()->document()->updateLayoutTreeIfNeeded(); 824 frame()->document()->updateLayoutTreeIfNeeded();
815 825
816 FrameHost* host = frame()->host(); 826 FrameHost* host = frame()->host();
817 if (!host) 827 if (!host)
818 return; 828 return;
819 829
820 if (frame()->document()->sandboxFlags())
821 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
822
823 host->chrome().runJavaScriptAlert(frame(), message); 830 host->chrome().runJavaScriptAlert(frame(), message);
824 } 831 }
825 832
826 bool LocalDOMWindow::confirm(const String& message) 833 bool LocalDOMWindow::confirm(const String& message)
827 { 834 {
828 if (!frame()) 835 if (!frame())
829 return false; 836 return false;
830 837
838 if (frame()->document()->isSandboxed(SandboxModals)) {
839 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
840 if (RuntimeEnabledFeatures::sandboxBlocksModalsEnabled())
841 return false;
842 }
843
831 frame()->document()->updateLayoutTreeIfNeeded(); 844 frame()->document()->updateLayoutTreeIfNeeded();
832 845
833 FrameHost* host = frame()->host(); 846 FrameHost* host = frame()->host();
834 if (!host) 847 if (!host)
835 return false; 848 return false;
836 849
837 if (frame()->document()->sandboxFlags()) 850 if (frame()->document()->isSandboxed(SandboxModals)) {
838 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext); 851 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
852 if (RuntimeEnabledFeatures::sandboxBlocksModalsEnabled())
853 return false;
854 }
839 855
840 return host->chrome().runJavaScriptConfirm(frame(), message); 856 return host->chrome().runJavaScriptConfirm(frame(), message);
841 } 857 }
842 858
843 String LocalDOMWindow::prompt(const String& message, const String& defaultValue) 859 String LocalDOMWindow::prompt(const String& message, const String& defaultValue)
844 { 860 {
845 if (!frame()) 861 if (!frame())
846 return String(); 862 return String();
847 863
864 if (frame()->document()->isSandboxed(SandboxModals)) {
865 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
866 if (RuntimeEnabledFeatures::sandboxBlocksModalsEnabled())
867 return String();
868 }
869
848 frame()->document()->updateLayoutTreeIfNeeded(); 870 frame()->document()->updateLayoutTreeIfNeeded();
849 871
850 FrameHost* host = frame()->host(); 872 FrameHost* host = frame()->host();
851 if (!host) 873 if (!host)
852 return String(); 874 return String();
853 875
854 if (frame()->document()->sandboxFlags())
855 UseCounter::count(frame()->document(), UseCounter::DialogInSandboxedCont ext);
856
857 String returnValue; 876 String returnValue;
858 if (host->chrome().runJavaScriptPrompt(frame(), message, defaultValue, retur nValue)) 877 if (host->chrome().runJavaScriptPrompt(frame(), message, defaultValue, retur nValue))
859 return returnValue; 878 return returnValue;
860 879
861 return String(); 880 return String();
862 } 881 }
863 882
864 bool LocalDOMWindow::find(const String& string, bool caseSensitive, bool backwar ds, bool wrap, bool wholeWord, bool /*searchInFrames*/, bool /*showDialog*/) con st 883 bool LocalDOMWindow::find(const String& string, bool caseSensitive, bool backwar ds, bool wrap, bool wholeWord, bool /*searchInFrames*/, bool /*showDialog*/) con st
865 { 884 {
866 if (!isCurrentlyDisplayedInFrame()) 885 if (!isCurrentlyDisplayedInFrame())
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 DOMWindow::trace(visitor); 1527 DOMWindow::trace(visitor);
1509 DOMWindowLifecycleNotifier::trace(visitor); 1528 DOMWindowLifecycleNotifier::trace(visitor);
1510 } 1529 }
1511 1530
1512 LocalFrame* LocalDOMWindow::frame() const 1531 LocalFrame* LocalDOMWindow::frame() const
1513 { 1532 {
1514 return m_frameObserver->frame(); 1533 return m_frameObserver->frame();
1515 } 1534 }
1516 1535
1517 } // namespace blink 1536 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/dom/SandboxFlags.h ('k') | Source/platform/RuntimeEnabledFeatures.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698