OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. | 3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
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 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 #include "base/logging.h" | 140 #include "base/logging.h" |
141 #include "base/message_loop.h" | 141 #include "base/message_loop.h" |
142 #include "base/stats_counters.h" | 142 #include "base/stats_counters.h" |
143 #include "base/string_util.h" | 143 #include "base/string_util.h" |
144 #include "net/base/net_errors.h" | 144 #include "net/base/net_errors.h" |
145 #include "skia/ext/bitmap_platform_device.h" | 145 #include "skia/ext/bitmap_platform_device.h" |
146 #include "skia/ext/platform_canvas.h" | 146 #include "skia/ext/platform_canvas.h" |
147 #include "webkit/api/public/WebConsoleMessage.h" | 147 #include "webkit/api/public/WebConsoleMessage.h" |
148 #include "webkit/api/public/WebFindOptions.h" | 148 #include "webkit/api/public/WebFindOptions.h" |
149 #include "webkit/api/public/WebForm.h" | 149 #include "webkit/api/public/WebForm.h" |
| 150 #include "webkit/api/public/WebFrameClient.h" |
150 #include "webkit/api/public/WebHistoryItem.h" | 151 #include "webkit/api/public/WebHistoryItem.h" |
151 #include "webkit/api/public/WebRange.h" | 152 #include "webkit/api/public/WebRange.h" |
152 #include "webkit/api/public/WebRect.h" | 153 #include "webkit/api/public/WebRect.h" |
153 #include "webkit/api/public/WebScriptSource.h" | 154 #include "webkit/api/public/WebScriptSource.h" |
154 #include "webkit/api/public/WebSize.h" | 155 #include "webkit/api/public/WebSize.h" |
155 #include "webkit/api/public/WebURLError.h" | 156 #include "webkit/api/public/WebURLError.h" |
156 #include "webkit/api/public/WebVector.h" | 157 #include "webkit/api/public/WebVector.h" |
157 #include "webkit/api/src/WebDataSourceImpl.h" | 158 #include "webkit/api/src/WebDataSourceImpl.h" |
158 #include "webkit/glue/chrome_client_impl.h" | 159 #include "webkit/glue/chrome_client_impl.h" |
159 #include "webkit/glue/dom_operations.h" | 160 #include "webkit/glue/dom_operations.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 using WebCore::VisiblePosition; | 211 using WebCore::VisiblePosition; |
211 using WebCore::XPathResult; | 212 using WebCore::XPathResult; |
212 | 213 |
213 using WebKit::WebCanvas; | 214 using WebKit::WebCanvas; |
214 using WebKit::WebConsoleMessage; | 215 using WebKit::WebConsoleMessage; |
215 using WebKit::WebData; | 216 using WebKit::WebData; |
216 using WebKit::WebDataSource; | 217 using WebKit::WebDataSource; |
217 using WebKit::WebDataSourceImpl; | 218 using WebKit::WebDataSourceImpl; |
218 using WebKit::WebFindOptions; | 219 using WebKit::WebFindOptions; |
219 using WebKit::WebFrame; | 220 using WebKit::WebFrame; |
| 221 using WebKit::WebFrameClient; |
220 using WebKit::WebHistoryItem; | 222 using WebKit::WebHistoryItem; |
221 using WebKit::WebForm; | 223 using WebKit::WebForm; |
222 using WebKit::WebRange; | 224 using WebKit::WebRange; |
223 using WebKit::WebRect; | 225 using WebKit::WebRect; |
224 using WebKit::WebScriptSource; | 226 using WebKit::WebScriptSource; |
225 using WebKit::WebSize; | 227 using WebKit::WebSize; |
226 using WebKit::WebString; | 228 using WebKit::WebString; |
227 using WebKit::WebURL; | 229 using WebKit::WebURL; |
228 using WebKit::WebURLError; | 230 using WebKit::WebURLError; |
229 using WebKit::WebURLRequest; | 231 using WebKit::WebURLRequest; |
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 frame_->loader()->setEncoding(encoding, user_chosen); | 893 frame_->loader()->setEncoding(encoding, user_chosen); |
892 | 894 |
893 // NOTE: mac only does this if there is a document | 895 // NOTE: mac only does this if there is a document |
894 frame_->loader()->addData(data, data_len); | 896 frame_->loader()->addData(data, data_len); |
895 } | 897 } |
896 | 898 |
897 unsigned WebFrameImpl::unloadListenerCount() const { | 899 unsigned WebFrameImpl::unloadListenerCount() const { |
898 return frame()->domWindow()->pendingUnloadEventListeners(); | 900 return frame()->domWindow()->pendingUnloadEventListeners(); |
899 } | 901 } |
900 | 902 |
| 903 bool WebFrameImpl::isProcessingUserGesture() const { |
| 904 return frame()->loader()->isProcessingUserGesture(); |
| 905 } |
| 906 |
901 void WebFrameImpl::replaceSelection(const WebString& wtext) { | 907 void WebFrameImpl::replaceSelection(const WebString& wtext) { |
902 String text = webkit_glue::WebStringToString(wtext); | 908 String text = webkit_glue::WebStringToString(wtext); |
903 RefPtr<DocumentFragment> fragment = createFragmentFromText( | 909 RefPtr<DocumentFragment> fragment = createFragmentFromText( |
904 frame()->selection()->toNormalizedRange().get(), text); | 910 frame()->selection()->toNormalizedRange().get(), text); |
905 WebCore::applyCommand(WebCore::ReplaceSelectionCommand::create( | 911 WebCore::applyCommand(WebCore::ReplaceSelectionCommand::create( |
906 frame()->document(), fragment.get(), false, true, true)); | 912 frame()->document(), fragment.get(), false, true, true)); |
907 } | 913 } |
908 | 914 |
909 void WebFrameImpl::insertText(const WebString& text) { | 915 void WebFrameImpl::insertText(const WebString& text) { |
910 frame()->editor()->insertText(webkit_glue::WebStringToString(text), NULL); | 916 frame()->editor()->insertText(webkit_glue::WebStringToString(text), NULL); |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1393 active_match_index_ = -1; | 1399 active_match_index_ = -1; |
1394 } | 1400 } |
1395 | 1401 |
1396 void WebFrameImpl::increaseMatchCount(int count, int request_id) { | 1402 void WebFrameImpl::increaseMatchCount(int count, int request_id) { |
1397 // This function should only be called on the mainframe. | 1403 // This function should only be called on the mainframe. |
1398 DCHECK(!parent()); | 1404 DCHECK(!parent()); |
1399 | 1405 |
1400 total_matchcount_ += count; | 1406 total_matchcount_ += count; |
1401 | 1407 |
1402 // Update the UI with the latest findings. | 1408 // Update the UI with the latest findings. |
1403 WebViewDelegate* webview_delegate = GetWebViewImpl()->GetDelegate(); | 1409 WebViewDelegate* webview_delegate = GetWebViewImpl()->delegate(); |
1404 DCHECK(webview_delegate); | 1410 DCHECK(webview_delegate); |
1405 if (webview_delegate) | 1411 if (webview_delegate) |
1406 webview_delegate->ReportFindInPageMatchCount(total_matchcount_, request_id, | 1412 webview_delegate->ReportFindInPageMatchCount(total_matchcount_, request_id, |
1407 frames_scoping_count_ == 0); | 1413 frames_scoping_count_ == 0); |
1408 } | 1414 } |
1409 | 1415 |
1410 void WebFrameImpl::reportFindInPageSelection(const WebRect& selection_rect, | 1416 void WebFrameImpl::reportFindInPageSelection(const WebRect& selection_rect, |
1411 int active_match_ordinal, | 1417 int active_match_ordinal, |
1412 int request_id) { | 1418 int request_id) { |
1413 // Update the UI with the latest selection rect. | 1419 // Update the UI with the latest selection rect. |
1414 WebViewDelegate* webview_delegate = GetWebViewImpl()->GetDelegate(); | 1420 WebViewDelegate* webview_delegate = GetWebViewImpl()->delegate(); |
1415 DCHECK(webview_delegate); | 1421 DCHECK(webview_delegate); |
1416 if (webview_delegate) { | 1422 if (webview_delegate) { |
1417 webview_delegate->ReportFindInPageSelection( | 1423 webview_delegate->ReportFindInPageSelection( |
1418 request_id, | 1424 request_id, |
1419 OrdinalOfFirstMatchForFrame(this) + active_match_ordinal, | 1425 OrdinalOfFirstMatchForFrame(this) + active_match_ordinal, |
1420 selection_rect); | 1426 selection_rect); |
1421 } | 1427 } |
1422 } | 1428 } |
1423 | 1429 |
1424 void WebFrameImpl::resetMatchCount() { | 1430 void WebFrameImpl::resetMatchCount() { |
(...skipping 20 matching lines...) Expand all Loading... |
1445 } | 1451 } |
1446 | 1452 |
1447 WebString WebFrameImpl::contentAsMarkup() const { | 1453 WebString WebFrameImpl::contentAsMarkup() const { |
1448 return webkit_glue::StringToWebString(createFullMarkup(frame_->document())); | 1454 return webkit_glue::StringToWebString(createFullMarkup(frame_->document())); |
1449 } | 1455 } |
1450 | 1456 |
1451 // WebFrameImpl public --------------------------------------------------------- | 1457 // WebFrameImpl public --------------------------------------------------------- |
1452 | 1458 |
1453 int WebFrameImpl::live_object_count_ = 0; | 1459 int WebFrameImpl::live_object_count_ = 0; |
1454 | 1460 |
1455 WebFrameImpl::WebFrameImpl() | 1461 WebFrameImpl::WebFrameImpl(WebFrameClient* client) |
1456 : ALLOW_THIS_IN_INITIALIZER_LIST(frame_loader_client_(this)), | 1462 : ALLOW_THIS_IN_INITIALIZER_LIST(frame_loader_client_(this)), |
1457 ALLOW_THIS_IN_INITIALIZER_LIST(scope_matches_factory_(this)), | 1463 ALLOW_THIS_IN_INITIALIZER_LIST(scope_matches_factory_(this)), |
| 1464 client_(client), |
1458 active_match_frame_(NULL), | 1465 active_match_frame_(NULL), |
1459 active_match_index_(-1), | 1466 active_match_index_(-1), |
1460 locating_active_rect_(false), | 1467 locating_active_rect_(false), |
1461 resume_scoping_from_range_(NULL), | 1468 resume_scoping_from_range_(NULL), |
1462 last_match_count_(-1), | 1469 last_match_count_(-1), |
1463 total_matchcount_(-1), | 1470 total_matchcount_(-1), |
1464 frames_scoping_count_(-1), | 1471 frames_scoping_count_(-1), |
1465 scoping_complete_(false), | 1472 scoping_complete_(false), |
1466 next_invalidate_after_(0) { | 1473 next_invalidate_after_(0) { |
1467 StatsCounter(kWebFrameActiveCount).Increment(); | 1474 StatsCounter(kWebFrameActiveCount).Increment(); |
(...skipping 19 matching lines...) Expand all Loading... |
1487 | 1494 |
1488 // We must call init() after frame_ is assigned because it is referenced | 1495 // We must call init() after frame_ is assigned because it is referenced |
1489 // during init(). | 1496 // during init(). |
1490 frame_->init(); | 1497 frame_->init(); |
1491 } | 1498 } |
1492 | 1499 |
1493 PassRefPtr<Frame> WebFrameImpl::CreateChildFrame( | 1500 PassRefPtr<Frame> WebFrameImpl::CreateChildFrame( |
1494 const FrameLoadRequest& request, HTMLFrameOwnerElement* owner_element) { | 1501 const FrameLoadRequest& request, HTMLFrameOwnerElement* owner_element) { |
1495 // TODO(darin): share code with initWithName() | 1502 // TODO(darin): share code with initWithName() |
1496 | 1503 |
1497 scoped_refptr<WebFrameImpl> webframe = new WebFrameImpl(); | 1504 scoped_refptr<WebFrameImpl> webframe = new WebFrameImpl(client()); |
1498 | 1505 |
1499 // Add an extra ref on behalf of the Frame/FrameLoader, which references the | 1506 // Add an extra ref on behalf of the Frame/FrameLoader, which references the |
1500 // WebFrame via the FrameLoaderClient interface. See the comment at the top | 1507 // WebFrame via the FrameLoaderClient interface. See the comment at the top |
1501 // of this file for more info. | 1508 // of this file for more info. |
1502 webframe->AddRef(); | 1509 webframe->AddRef(); |
1503 | 1510 |
1504 RefPtr<Frame> child_frame = Frame::create( | 1511 RefPtr<Frame> child_frame = Frame::create( |
1505 frame_->page(), owner_element, &webframe->frame_loader_client_); | 1512 frame_->page(), owner_element, &webframe->frame_loader_client_); |
1506 webframe->frame_ = child_frame.get(); | 1513 webframe->frame_ = child_frame.get(); |
1507 | 1514 |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1677 frame()->document()->setFocusedNode(node); | 1684 frame()->document()->setFocusedNode(node); |
1678 break; | 1685 break; |
1679 } | 1686 } |
1680 node = node->traverseNextNode(); | 1687 node = node->traverseNextNode(); |
1681 } | 1688 } |
1682 } | 1689 } |
1683 } | 1690 } |
1684 } | 1691 } |
1685 | 1692 |
1686 void WebFrameImpl::DidFail(const ResourceError& error, bool was_provisional) { | 1693 void WebFrameImpl::DidFail(const ResourceError& error, bool was_provisional) { |
1687 WebViewImpl* web_view = GetWebViewImpl(); | 1694 if (!client_) |
1688 WebViewDelegate* delegate = web_view->delegate(); | 1695 return; |
1689 if (delegate) { | 1696 const WebURLError& web_error = |
1690 const WebURLError& web_error = | 1697 webkit_glue::ResourceErrorToWebURLError(error); |
1691 webkit_glue::ResourceErrorToWebURLError(error); | 1698 if (was_provisional) { |
1692 if (was_provisional) { | 1699 client_->didFailProvisionalLoad(this, web_error); |
1693 delegate->DidFailProvisionalLoadWithError(web_view, web_error, this); | 1700 } else { |
1694 } else { | 1701 client_->didFailLoad(this, web_error); |
1695 delegate->DidFailLoadWithError(web_view, web_error, this); | |
1696 } | |
1697 } | 1702 } |
1698 } | 1703 } |
1699 | 1704 |
1700 void WebFrameImpl::SetAllowsScrolling(bool flag) { | 1705 void WebFrameImpl::SetAllowsScrolling(bool flag) { |
1701 frame_->view()->setCanHaveScrollbars(flag); | 1706 frame_->view()->setCanHaveScrollbars(flag); |
1702 } | 1707 } |
1703 | 1708 |
1704 void WebFrameImpl::RegisterPasswordListener( | 1709 void WebFrameImpl::RegisterPasswordListener( |
1705 PassRefPtr<WebCore::HTMLInputElement> input_element, | 1710 PassRefPtr<WebCore::HTMLInputElement> input_element, |
1706 webkit_glue::PasswordAutocompleteListener* listener) { | 1711 webkit_glue::PasswordAutocompleteListener* listener) { |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1876 | 1881 |
1877 SecurityOrigin* security_origin = frame_->document()->securityOrigin(); | 1882 SecurityOrigin* security_origin = frame_->document()->securityOrigin(); |
1878 | 1883 |
1879 if (!frame_->loader()->isScheduledLocationChangePending()) { | 1884 if (!frame_->loader()->isScheduledLocationChangePending()) { |
1880 frame_->loader()->stopAllLoaders(); | 1885 frame_->loader()->stopAllLoaders(); |
1881 frame_->loader()->begin(frame_->loader()->url(), true, security_origin); | 1886 frame_->loader()->begin(frame_->loader()->url(), true, security_origin); |
1882 frame_->loader()->write(script_result); | 1887 frame_->loader()->write(script_result); |
1883 frame_->loader()->end(); | 1888 frame_->loader()->end(); |
1884 } | 1889 } |
1885 } | 1890 } |
OLD | NEW |