OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google 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 are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 #include "web/WebPluginContainerImpl.h" | 103 #include "web/WebPluginContainerImpl.h" |
104 #include "web/WebSettingsImpl.h" | 104 #include "web/WebSettingsImpl.h" |
105 #include "web/WebViewImpl.h" | 105 #include "web/WebViewImpl.h" |
106 #include "wtf/text/CString.h" | 106 #include "wtf/text/CString.h" |
107 #include "wtf/text/CharacterNames.h" | 107 #include "wtf/text/CharacterNames.h" |
108 #include "wtf/text/StringBuilder.h" | 108 #include "wtf/text/StringBuilder.h" |
109 #include "wtf/text/StringConcatenate.h" | 109 #include "wtf/text/StringConcatenate.h" |
110 | 110 |
111 namespace blink { | 111 namespace blink { |
112 | 112 |
| 113 namespace { |
| 114 |
| 115 const char* dialogTypeToString(ChromeClient::DialogType dialogType) |
| 116 { |
| 117 switch (dialogType) { |
| 118 case ChromeClient::AlertDialog: |
| 119 return "alert"; |
| 120 case ChromeClient::ConfirmDialog: |
| 121 return "confirm"; |
| 122 case ChromeClient::PromptDialog: |
| 123 return "prompt"; |
| 124 case ChromeClient::HTMLDialog: |
| 125 ASSERT_NOT_REACHED(); |
| 126 } |
| 127 ASSERT_NOT_REACHED(); |
| 128 return ""; |
| 129 } |
| 130 |
| 131 const char* dismissalTypeToString(Document::PageDismissalType dismissalType) |
| 132 { |
| 133 switch (dismissalType) { |
| 134 case Document::BeforeUnloadDismissal: |
| 135 return "beforeunload"; |
| 136 case Document::PageHideDismissal: |
| 137 return "pagehide"; |
| 138 case Document::UnloadVisibilityChangeDismissal: |
| 139 return "visibilitychange"; |
| 140 case Document::UnloadDismissal: |
| 141 return "unload"; |
| 142 case Document::NoDismissal: |
| 143 ASSERT_NOT_REACHED(); |
| 144 } |
| 145 ASSERT_NOT_REACHED(); |
| 146 return ""; |
| 147 } |
| 148 |
| 149 } // namespace |
| 150 |
113 class CompositorAnimationTimeline; | 151 class CompositorAnimationTimeline; |
114 | 152 |
115 // Converts a AXObjectCache::AXNotification to a WebAXEvent | 153 // Converts a AXObjectCache::AXNotification to a WebAXEvent |
116 static WebAXEvent toWebAXEvent(AXObjectCache::AXNotification notification) | 154 static WebAXEvent toWebAXEvent(AXObjectCache::AXNotification notification) |
117 { | 155 { |
118 // These enums have the same values; enforced in AssertMatchingEnums.cpp. | 156 // These enums have the same values; enforced in AssertMatchingEnums.cpp. |
119 return static_cast<WebAXEvent>(notification); | 157 return static_cast<WebAXEvent>(notification); |
120 } | 158 } |
121 | 159 |
122 ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) | 160 ChromeClientImpl::ChromeClientImpl(WebViewImpl* webView) |
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 m_webView->closePagePopup(popup); | 890 m_webView->closePagePopup(popup); |
853 } | 891 } |
854 | 892 |
855 DOMWindow* ChromeClientImpl::pagePopupWindowForTesting() const | 893 DOMWindow* ChromeClientImpl::pagePopupWindowForTesting() const |
856 { | 894 { |
857 return m_webView->pagePopupWindow(); | 895 return m_webView->pagePopupWindow(); |
858 } | 896 } |
859 | 897 |
860 bool ChromeClientImpl::shouldOpenModalDialogDuringPageDismissal(const DialogType
& dialogType, const String& dialogMessage, Document::PageDismissalType dismissal
Type) const | 898 bool ChromeClientImpl::shouldOpenModalDialogDuringPageDismissal(const DialogType
& dialogType, const String& dialogMessage, Document::PageDismissalType dismissal
Type) const |
861 { | 899 { |
862 const char* const kDialogs[] = { "alert", "confirm", "prompt" }; | 900 String message = String("Blocked ") + dialogTypeToString(dialogType) + "('"
+ dialogMessage + "') during " + dismissalTypeToString(dismissalType) + "."; |
863 int dialog = static_cast<int>(dialogType); | |
864 ASSERT_WITH_SECURITY_IMPLICATION(0 <= dialog); | |
865 ASSERT_WITH_SECURITY_IMPLICATION(dialog < static_cast<int>(WTF_ARRAY_LENGTH(
kDialogs))); | |
866 | |
867 const char* const kDismissals[] = { "beforeunload", "pagehide", "unload" }; | |
868 int dismissal = static_cast<int>(dismissalType) - 1; // Exclude NoDismissal. | |
869 ASSERT_WITH_SECURITY_IMPLICATION(0 <= dismissal); | |
870 ASSERT_WITH_SECURITY_IMPLICATION(dismissal < static_cast<int>(WTF_ARRAY_LENG
TH(kDismissals))); | |
871 | |
872 DEFINE_STATIC_LOCAL(EnumerationHistogram, dialogDismissalHistogram, ("Render
er.ModalDialogsDuringPageDismissal", WTF_ARRAY_LENGTH(kDialogs) * WTF_ARRAY_LENG
TH(kDismissals))); | |
873 dialogDismissalHistogram.count(dismissal * WTF_ARRAY_LENGTH(kDialogs) + dial
og); | |
874 | |
875 String message = String("Blocked ") + kDialogs[dialog] + "('" + dialogMessag
e + "') during " + kDismissals[dismissal] + "."; | |
876 m_webView->mainFrame()->addMessageToConsole(WebConsoleMessage(WebConsoleMess
age::LevelError, message)); | 901 m_webView->mainFrame()->addMessageToConsole(WebConsoleMessage(WebConsoleMess
age::LevelError, message)); |
877 | 902 |
878 return false; | 903 return false; |
879 } | 904 } |
880 | 905 |
881 void ChromeClientImpl::setEventListenerProperties(WebEventListenerClass eventCla
ss, WebEventListenerProperties properties) | 906 void ChromeClientImpl::setEventListenerProperties(WebEventListenerClass eventCla
ss, WebEventListenerProperties properties) |
882 { | 907 { |
883 if (eventClass == WebEventListenerClass::Touch) | 908 if (eventClass == WebEventListenerClass::Touch) |
884 m_webView->hasTouchEventHandlers(properties != WebEventListenerPropertie
s::Nothing); | 909 m_webView->hasTouchEventHandlers(properties != WebEventListenerPropertie
s::Nothing); |
885 | 910 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1058 if (m_webView->pageImportanceSignals()) | 1083 if (m_webView->pageImportanceSignals()) |
1059 m_webView->pageImportanceSignals()->setIssuedNonGetFetchFromScript(); | 1084 m_webView->pageImportanceSignals()->setIssuedNonGetFetchFromScript(); |
1060 } | 1085 } |
1061 | 1086 |
1062 PassOwnPtr<WebFrameScheduler> ChromeClientImpl::createFrameScheduler() | 1087 PassOwnPtr<WebFrameScheduler> ChromeClientImpl::createFrameScheduler() |
1063 { | 1088 { |
1064 return m_webView->scheduler()->createFrameScheduler().release(); | 1089 return m_webView->scheduler()->createFrameScheduler().release(); |
1065 } | 1090 } |
1066 | 1091 |
1067 } // namespace blink | 1092 } // namespace blink |
OLD | NEW |