OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 frameRequest.setLockBackForwardList(replace); | 879 frameRequest.setLockBackForwardList(replace); |
880 frame()->loader().load(frameRequest); | 880 frame()->loader().load(frameRequest); |
881 } | 881 } |
882 | 882 |
883 void WebLocalFrameImpl::loadHTMLString(const WebData& data, const WebURL& baseUR
L, const WebURL& unreachableURL, bool replace) | 883 void WebLocalFrameImpl::loadHTMLString(const WebData& data, const WebURL& baseUR
L, const WebURL& unreachableURL, bool replace) |
884 { | 884 { |
885 ASSERT(frame()); | 885 ASSERT(frame()); |
886 loadData(data, WebString::fromUTF8("text/html"), WebString::fromUTF8("UTF-8"
), baseURL, unreachableURL, replace); | 886 loadData(data, WebString::fromUTF8("text/html"), WebString::fromUTF8("UTF-8"
), baseURL, unreachableURL, replace); |
887 } | 887 } |
888 | 888 |
889 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina
tionURL) | |
890 { | |
891 ASSERT(frame()); | |
892 const Node* node = linkNode.constUnwrap<Node>(); | |
893 if (isHTMLAnchorElement(node)) | |
894 toHTMLAnchorElement(node)->sendPings(destinationURL); | |
895 } | |
896 | |
897 bool WebLocalFrameImpl::isLoading() const | |
898 { | |
899 if (!frame() || !frame()->document()) | |
900 return false; | |
901 return frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument()
|| !frame()->document()->loadEventFinished(); | |
902 } | |
903 | |
904 bool WebLocalFrameImpl::isResourceLoadInProgress() const | |
905 { | |
906 if (!frame() || !frame()->document()) | |
907 return false; | |
908 return frame()->document()->fetcher()->requestCount(); | |
909 } | |
910 | |
911 void WebLocalFrameImpl::stopLoading() | 889 void WebLocalFrameImpl::stopLoading() |
912 { | 890 { |
913 if (!frame()) | 891 if (!frame()) |
914 return; | 892 return; |
915 // FIXME: Figure out what we should really do here. It seems like a bug | 893 // FIXME: Figure out what we should really do here. It seems like a bug |
916 // that FrameLoader::stopLoading doesn't call stopAllLoaders. | 894 // that FrameLoader::stopLoading doesn't call stopAllLoaders. |
917 frame()->loader().stopAllLoaders(); | 895 frame()->loader().stopAllLoaders(); |
918 } | 896 } |
919 | 897 |
920 WebDataSource* WebLocalFrameImpl::provisionalDataSource() const | 898 WebDataSource* WebLocalFrameImpl::provisionalDataSource() const |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1230 | 1208 |
1231 void WebLocalFrameImpl::extendSelectionAndDelete(int before, int after) | 1209 void WebLocalFrameImpl::extendSelectionAndDelete(int before, int after) |
1232 { | 1210 { |
1233 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported()) { | 1211 if (WebPlugin* plugin = focusedPluginIfInputMethodSupported()) { |
1234 plugin->extendSelectionAndDelete(before, after); | 1212 plugin->extendSelectionAndDelete(before, after); |
1235 return; | 1213 return; |
1236 } | 1214 } |
1237 frame()->inputMethodController().extendSelectionAndDelete(before, after); | 1215 frame()->inputMethodController().extendSelectionAndDelete(before, after); |
1238 } | 1216 } |
1239 | 1217 |
1240 void WebLocalFrameImpl::navigateToSandboxedMarkup(const WebData& markup) | |
1241 { | |
1242 ASSERT(document().securityOrigin().isUnique()); | |
1243 frame()->loader().forceSandboxFlags(SandboxAll); | |
1244 loadHTMLString(markup, document().url(), WebURL(), true); | |
1245 } | |
1246 | |
1247 void WebLocalFrameImpl::setCaretVisible(bool visible) | 1218 void WebLocalFrameImpl::setCaretVisible(bool visible) |
1248 { | 1219 { |
1249 frame()->selection().setCaretVisible(visible); | 1220 frame()->selection().setCaretVisible(visible); |
1250 } | 1221 } |
1251 | 1222 |
1252 VisiblePosition WebLocalFrameImpl::visiblePositionForWindowPoint(const WebPoint&
point) | 1223 VisiblePosition WebLocalFrameImpl::visiblePositionForWindowPoint(const WebPoint&
point) |
1253 { | 1224 { |
1254 // FIXME(bokan): crbug.com/371902 - These scale/pinch transforms shouldn't | 1225 // FIXME(bokan): crbug.com/371902 - These scale/pinch transforms shouldn't |
1255 // be ad hoc and explicit. | 1226 // be ad hoc and explicit. |
1256 PinchViewport& pinchViewport = frame()->page()->frameHost().pinchViewport(); | 1227 PinchViewport& pinchViewport = frame()->page()->frameHost().pinchViewport(); |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 // This function should only be called on the mainframe. | 1373 // This function should only be called on the mainframe. |
1403 ASSERT(!parent()); | 1374 ASSERT(!parent()); |
1404 ensureTextFinder().increaseMatchCount(identifier, count); | 1375 ensureTextFinder().increaseMatchCount(identifier, count); |
1405 } | 1376 } |
1406 | 1377 |
1407 void WebLocalFrameImpl::resetMatchCount() | 1378 void WebLocalFrameImpl::resetMatchCount() |
1408 { | 1379 { |
1409 ensureTextFinder().resetMatchCount(); | 1380 ensureTextFinder().resetMatchCount(); |
1410 } | 1381 } |
1411 | 1382 |
1412 void WebLocalFrameImpl::sendOrientationChangeEvent() | |
1413 { | |
1414 if (!frame()) | |
1415 return; | |
1416 | |
1417 // Screen Orientation API | |
1418 if (ScreenOrientationController::from(*frame())) | |
1419 ScreenOrientationController::from(*frame())->notifyOrientationChanged(); | |
1420 | |
1421 // Legacy window.orientation API. | |
1422 if (RuntimeEnabledFeatures::orientationEventEnabled() && frame()->domWindow(
)) | |
1423 frame()->domWindow()->dispatchEvent(Event::create(EventTypeNames::orient
ationchange)); | |
1424 } | |
1425 | |
1426 void WebLocalFrameImpl::dispatchMessageEventWithOriginCheck(const WebSecurityOri
gin& intendedTargetOrigin, const WebDOMEvent& event) | 1383 void WebLocalFrameImpl::dispatchMessageEventWithOriginCheck(const WebSecurityOri
gin& intendedTargetOrigin, const WebDOMEvent& event) |
1427 { | 1384 { |
1428 ASSERT(!event.isNull()); | 1385 ASSERT(!event.isNull()); |
1429 frame()->domWindow()->dispatchMessageEventWithOriginCheck(intendedTargetOrig
in.get(), event, nullptr); | 1386 frame()->domWindow()->dispatchMessageEventWithOriginCheck(intendedTargetOrig
in.get(), event, nullptr); |
1430 } | 1387 } |
1431 | 1388 |
1432 int WebLocalFrameImpl::findMatchMarkersVersion() const | 1389 int WebLocalFrameImpl::findMatchMarkersVersion() const |
1433 { | 1390 { |
1434 ASSERT(!parent()); | 1391 ASSERT(!parent()); |
1435 | 1392 |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1844 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); | 1801 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
1845 v8::HandleScope handleScope(toIsolate(frame())); | 1802 v8::HandleScope handleScope(toIsolate(frame())); |
1846 v8::Local<v8::Value> result = frame()->script().executeScriptInMainWorldAndR
eturnValue(ScriptSourceCode(script)); | 1803 v8::Local<v8::Value> result = frame()->script().executeScriptInMainWorldAndR
eturnValue(ScriptSourceCode(script)); |
1847 if (result.IsEmpty() || !result->IsString()) | 1804 if (result.IsEmpty() || !result->IsString()) |
1848 return; | 1805 return; |
1849 String scriptResult = toCoreString(v8::Handle<v8::String>::Cast(result)); | 1806 String scriptResult = toCoreString(v8::Handle<v8::String>::Cast(result)); |
1850 if (!frame()->navigationScheduler().locationChangePending()) | 1807 if (!frame()->navigationScheduler().locationChangePending()) |
1851 frame()->loader().replaceDocumentWhileExecutingJavaScriptURL(scriptResul
t, ownerDocument.get()); | 1808 frame()->loader().replaceDocumentWhileExecutingJavaScriptURL(scriptResul
t, ownerDocument.get()); |
1852 } | 1809 } |
1853 | 1810 |
| 1811 void WebLocalFrameImpl::sendPings(const WebNode& linkNode, const WebURL& destina
tionURL) |
| 1812 { |
| 1813 ASSERT(frame()); |
| 1814 const Node* node = linkNode.constUnwrap<Node>(); |
| 1815 if (isHTMLAnchorElement(node)) |
| 1816 toHTMLAnchorElement(node)->sendPings(destinationURL); |
| 1817 } |
| 1818 |
| 1819 bool WebLocalFrameImpl::isLoading() const |
| 1820 { |
| 1821 if (!frame() || !frame()->document()) |
| 1822 return false; |
| 1823 return frame()->loader().stateMachine()->isDisplayingInitialEmptyDocument()
|| !frame()->document()->loadEventFinished(); |
| 1824 } |
| 1825 |
| 1826 bool WebLocalFrameImpl::isResourceLoadInProgress() const |
| 1827 { |
| 1828 if (!frame() || !frame()->document()) |
| 1829 return false; |
| 1830 return frame()->document()->fetcher()->requestCount(); |
| 1831 } |
| 1832 |
1854 void WebLocalFrameImpl::addStyleSheetByURL(const WebString& url) | 1833 void WebLocalFrameImpl::addStyleSheetByURL(const WebString& url) |
1855 { | 1834 { |
1856 RefPtrWillBeRawPtr<Element> styleElement = frame()->document()->createElemen
t(HTMLNames::linkTag, false); | 1835 RefPtrWillBeRawPtr<Element> styleElement = frame()->document()->createElemen
t(HTMLNames::linkTag, false); |
1857 | 1836 |
1858 styleElement->setAttribute(HTMLNames::typeAttr, "text/css"); | 1837 styleElement->setAttribute(HTMLNames::typeAttr, "text/css"); |
1859 styleElement->setAttribute(HTMLNames::relAttr, "stylesheet"); | 1838 styleElement->setAttribute(HTMLNames::relAttr, "stylesheet"); |
1860 styleElement->setAttribute(HTMLNames::hrefAttr, url); | 1839 styleElement->setAttribute(HTMLNames::hrefAttr, url); |
1861 | 1840 |
1862 frame()->document()->head()->appendChild(styleElement.release(), IGNORE_EXCE
PTION); | 1841 frame()->document()->head()->appendChild(styleElement.release(), IGNORE_EXCE
PTION); |
1863 } | 1842 } |
1864 | 1843 |
| 1844 void WebLocalFrameImpl::navigateToSandboxedMarkup(const WebData& markup) |
| 1845 { |
| 1846 ASSERT(document().securityOrigin().isUnique()); |
| 1847 frame()->loader().forceSandboxFlags(SandboxAll); |
| 1848 loadHTMLString(markup, document().url(), WebURL(), true); |
| 1849 } |
| 1850 |
| 1851 void WebLocalFrameImpl::sendOrientationChangeEvent() |
| 1852 { |
| 1853 if (!frame()) |
| 1854 return; |
| 1855 |
| 1856 // Screen Orientation API |
| 1857 if (ScreenOrientationController::from(*frame())) |
| 1858 ScreenOrientationController::from(*frame())->notifyOrientationChanged(); |
| 1859 |
| 1860 // Legacy window.orientation API. |
| 1861 if (RuntimeEnabledFeatures::orientationEventEnabled() && frame()->domWindow(
)) |
| 1862 frame()->domWindow()->dispatchEvent(Event::create(EventTypeNames::orient
ationchange)); |
| 1863 } |
| 1864 |
| 1865 v8::Handle<v8::Value> WebLocalFrameImpl::executeScriptAndReturnValueForTests(con
st WebScriptSource& source) |
| 1866 { |
| 1867 // FIXME: This fake UserGestureIndicator is required for a bunch of browser |
| 1868 // tests to pass. We should update the tests to simulate input and get rid |
| 1869 // of this. |
| 1870 // http://code.google.com/p/chromium/issues/detail?id=86397 |
| 1871 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
| 1872 return executeScriptAndReturnValue(source); |
| 1873 } |
| 1874 |
1865 void WebLocalFrameImpl::willDetachParent() | 1875 void WebLocalFrameImpl::willDetachParent() |
1866 { | 1876 { |
1867 // Do not expect string scoping results from any frames that got detached | 1877 // Do not expect string scoping results from any frames that got detached |
1868 // in the middle of the operation. | 1878 // in the middle of the operation. |
1869 if (m_textFinder && m_textFinder->scopingInProgress()) { | 1879 if (m_textFinder && m_textFinder->scopingInProgress()) { |
1870 | 1880 |
1871 // There is a possibility that the frame being detached was the only | 1881 // There is a possibility that the frame being detached was the only |
1872 // pending one. We need to make sure final replies can be sent. | 1882 // pending one. We need to make sure final replies can be sent. |
1873 m_textFinder->flushCurrentScoping(); | 1883 m_textFinder->flushCurrentScoping(); |
1874 | 1884 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1912 | 1922 |
1913 void WebLocalFrameImpl::invalidateAll() const | 1923 void WebLocalFrameImpl::invalidateAll() const |
1914 { | 1924 { |
1915 ASSERT(frame() && frame()->view()); | 1925 ASSERT(frame() && frame()->view()); |
1916 FrameView* view = frame()->view(); | 1926 FrameView* view = frame()->view(); |
1917 view->invalidateRect(view->frameRect()); | 1927 view->invalidateRect(view->frameRect()); |
1918 invalidateScrollbar(); | 1928 invalidateScrollbar(); |
1919 } | 1929 } |
1920 | 1930 |
1921 } // namespace blink | 1931 } // namespace blink |
OLD | NEW |