• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "config.h"
6 #include "web/WebRemoteFrameImpl.h"
7 
8 #include "core/frame/FrameOwner.h"
9 #include "core/frame/RemoteFrame.h"
10 #include "public/platform/WebFloatRect.h"
11 #include "public/platform/WebRect.h"
12 #include "public/web/WebDocument.h"
13 #include "public/web/WebPerformance.h"
14 #include "public/web/WebRange.h"
15 #include "web/WebLocalFrameImpl.h"
16 #include "web/WebViewImpl.h"
17 #include <v8/include/v8.h>
18 
19 using namespace WebCore;
20 
21 namespace blink {
22 
23 namespace {
24 
25 // Helper class to bridge communication for a local frame with a remote parent.
26 // Currently, it serves two purposes:
27 // 1. Allows the local frame's loader to retrieve sandbox flags associated with
28 //    its owner element in another process.
29 // 2. Trigger a load event on its owner element once it finishes a load.
30 class RemoteBridgeFrameOwner : public FrameOwner {
31 public:
32     explicit RemoteBridgeFrameOwner(PassRefPtr<WebLocalFrameImpl>);
33 
34     virtual bool isLocal() const OVERRIDE;
35     virtual SandboxFlags sandboxFlags() const OVERRIDE;
36     virtual void dispatchLoad() OVERRIDE;
37 
38 private:
39     RefPtr<WebLocalFrameImpl> m_frame;
40 };
41 
RemoteBridgeFrameOwner(PassRefPtr<WebLocalFrameImpl> frame)42 RemoteBridgeFrameOwner::RemoteBridgeFrameOwner(PassRefPtr<WebLocalFrameImpl> frame)
43     : m_frame(frame)
44 {
45 }
46 
isLocal() const47 bool RemoteBridgeFrameOwner::isLocal() const
48 {
49     return false;
50 }
51 
sandboxFlags() const52 SandboxFlags RemoteBridgeFrameOwner::sandboxFlags() const
53 {
54     // FIXME: Implement. Most likely grab it from m_frame.
55     return 0;
56 }
57 
dispatchLoad()58 void RemoteBridgeFrameOwner::dispatchLoad()
59 {
60     // FIXME: Implement. Most likely goes through m_frame->client().
61 }
62 
63 // FIXME: This is just a placeholder frame owner to supply to RemoteFrame when
64 // the parent is also a remote frame. Strictly speaking, this shouldn't be
65 // necessary, since a remote frame shouldn't ever need to communicate with a
66 // remote parent (there are no sandbox flags to retrieve in this case, nor can
67 // the RemoteFrame itself load a document). In most circumstances, the check for
68 // frame->owner() can be replaced with a check for frame->tree().parent(). Once
69 // that's done, this class can be removed.
70 class PlaceholderFrameOwner : public FrameOwner {
71 public:
72     virtual bool isLocal() const OVERRIDE;
73     virtual SandboxFlags sandboxFlags() const OVERRIDE;
74     virtual void dispatchLoad() OVERRIDE;
75 };
76 
isLocal() const77 bool PlaceholderFrameOwner::isLocal() const
78 {
79     return false;
80 }
81 
sandboxFlags() const82 SandboxFlags PlaceholderFrameOwner::sandboxFlags() const
83 {
84     ASSERT_NOT_REACHED();
85     return 0;
86 }
87 
dispatchLoad()88 void PlaceholderFrameOwner::dispatchLoad()
89 {
90     ASSERT_NOT_REACHED();
91 }
92 
93 } // namespace
94 
create(WebFrameClient *)95 WebRemoteFrame* WebRemoteFrame::create(WebFrameClient*)
96 {
97     return adoptRef(new WebRemoteFrameImpl()).leakRef();
98 }
99 
WebRemoteFrameImpl()100 WebRemoteFrameImpl::WebRemoteFrameImpl()
101     : m_frameClient(this)
102 {
103 }
104 
~WebRemoteFrameImpl()105 WebRemoteFrameImpl::~WebRemoteFrameImpl()
106 {
107 }
108 
isWebLocalFrame() const109 bool WebRemoteFrameImpl::isWebLocalFrame() const
110 {
111     return false;
112 }
113 
toWebLocalFrame()114 WebLocalFrame* WebRemoteFrameImpl::toWebLocalFrame()
115 {
116     ASSERT_NOT_REACHED();
117     return 0;
118 }
119 
isWebRemoteFrame() const120 bool WebRemoteFrameImpl::isWebRemoteFrame() const
121 {
122     return true;
123 }
124 
toWebRemoteFrame()125 WebRemoteFrame* WebRemoteFrameImpl::toWebRemoteFrame()
126 {
127     return this;
128 }
129 
close()130 void WebRemoteFrameImpl::close()
131 {
132     ASSERT_NOT_REACHED();
133 }
134 
uniqueName() const135 WebString WebRemoteFrameImpl::uniqueName() const
136 {
137     ASSERT_NOT_REACHED();
138     return WebString();
139 }
140 
assignedName() const141 WebString WebRemoteFrameImpl::assignedName() const
142 {
143     ASSERT_NOT_REACHED();
144     return WebString();
145 }
146 
setName(const WebString &)147 void WebRemoteFrameImpl::setName(const WebString&)
148 {
149     ASSERT_NOT_REACHED();
150 }
151 
iconURLs(int iconTypesMask) const152 WebVector<WebIconURL> WebRemoteFrameImpl::iconURLs(int iconTypesMask) const
153 {
154     ASSERT_NOT_REACHED();
155     return WebVector<WebIconURL>();
156 }
157 
setIsRemote(bool)158 void WebRemoteFrameImpl::setIsRemote(bool)
159 {
160     ASSERT_NOT_REACHED();
161 }
162 
setRemoteWebLayer(WebLayer *)163 void WebRemoteFrameImpl::setRemoteWebLayer(WebLayer*)
164 {
165     ASSERT_NOT_REACHED();
166 }
167 
setPermissionClient(WebPermissionClient *)168 void WebRemoteFrameImpl::setPermissionClient(WebPermissionClient*)
169 {
170     ASSERT_NOT_REACHED();
171 }
172 
setSharedWorkerRepositoryClient(WebSharedWorkerRepositoryClient *)173 void WebRemoteFrameImpl::setSharedWorkerRepositoryClient(WebSharedWorkerRepositoryClient*)
174 {
175     ASSERT_NOT_REACHED();
176 }
177 
setCanHaveScrollbars(bool)178 void WebRemoteFrameImpl::setCanHaveScrollbars(bool)
179 {
180     ASSERT_NOT_REACHED();
181 }
182 
scrollOffset() const183 WebSize WebRemoteFrameImpl::scrollOffset() const
184 {
185     ASSERT_NOT_REACHED();
186     return WebSize();
187 }
188 
setScrollOffset(const WebSize &)189 void WebRemoteFrameImpl::setScrollOffset(const WebSize&)
190 {
191     ASSERT_NOT_REACHED();
192 }
193 
minimumScrollOffset() const194 WebSize WebRemoteFrameImpl::minimumScrollOffset() const
195 {
196     ASSERT_NOT_REACHED();
197     return WebSize();
198 }
199 
maximumScrollOffset() const200 WebSize WebRemoteFrameImpl::maximumScrollOffset() const
201 {
202     ASSERT_NOT_REACHED();
203     return WebSize();
204 }
205 
contentsSize() const206 WebSize WebRemoteFrameImpl::contentsSize() const
207 {
208     ASSERT_NOT_REACHED();
209     return WebSize();
210 }
211 
hasVisibleContent() const212 bool WebRemoteFrameImpl::hasVisibleContent() const
213 {
214     ASSERT_NOT_REACHED();
215     return false;
216 }
217 
visibleContentRect() const218 WebRect WebRemoteFrameImpl::visibleContentRect() const
219 {
220     ASSERT_NOT_REACHED();
221     return WebRect();
222 }
223 
hasHorizontalScrollbar() const224 bool WebRemoteFrameImpl::hasHorizontalScrollbar() const
225 {
226     ASSERT_NOT_REACHED();
227     return false;
228 }
229 
hasVerticalScrollbar() const230 bool WebRemoteFrameImpl::hasVerticalScrollbar() const
231 {
232     ASSERT_NOT_REACHED();
233     return false;
234 }
235 
view() const236 WebView* WebRemoteFrameImpl::view() const
237 {
238     ASSERT_NOT_REACHED();
239     return 0;
240 }
241 
removeChild(WebFrame * frame)242 void WebRemoteFrameImpl::removeChild(WebFrame* frame)
243 {
244     WebFrame::removeChild(frame);
245     m_ownersForChildren.remove(frame);
246 }
247 
document() const248 WebDocument WebRemoteFrameImpl::document() const
249 {
250     ASSERT_NOT_REACHED();
251     return WebDocument();
252 }
253 
performance() const254 WebPerformance WebRemoteFrameImpl::performance() const
255 {
256     ASSERT_NOT_REACHED();
257     return WebPerformance();
258 }
259 
dispatchBeforeUnloadEvent()260 bool WebRemoteFrameImpl::dispatchBeforeUnloadEvent()
261 {
262     ASSERT_NOT_REACHED();
263     return false;
264 }
265 
dispatchUnloadEvent()266 void WebRemoteFrameImpl::dispatchUnloadEvent()
267 {
268     ASSERT_NOT_REACHED();
269 }
270 
windowObject() const271 NPObject* WebRemoteFrameImpl::windowObject() const
272 {
273     ASSERT_NOT_REACHED();
274     return 0;
275 }
276 
bindToWindowObject(const WebString & name,NPObject *)277 void WebRemoteFrameImpl::bindToWindowObject(const WebString& name, NPObject*)
278 {
279     ASSERT_NOT_REACHED();
280 }
281 
bindToWindowObject(const WebString & name,NPObject *,void *)282 void WebRemoteFrameImpl::bindToWindowObject(const WebString& name, NPObject*, void*)
283 {
284     ASSERT_NOT_REACHED();
285 }
286 
executeScript(const WebScriptSource &)287 void WebRemoteFrameImpl::executeScript(const WebScriptSource&)
288 {
289     ASSERT_NOT_REACHED();
290 }
291 
executeScriptInIsolatedWorld(int worldID,const WebScriptSource * sources,unsigned numSources,int extensionGroup)292 void WebRemoteFrameImpl::executeScriptInIsolatedWorld(
293     int worldID, const WebScriptSource* sources, unsigned numSources,
294     int extensionGroup)
295 {
296     ASSERT_NOT_REACHED();
297 }
298 
setIsolatedWorldSecurityOrigin(int worldID,const WebSecurityOrigin &)299 void WebRemoteFrameImpl::setIsolatedWorldSecurityOrigin(int worldID, const WebSecurityOrigin&)
300 {
301     ASSERT_NOT_REACHED();
302 }
303 
setIsolatedWorldContentSecurityPolicy(int worldID,const WebString &)304 void WebRemoteFrameImpl::setIsolatedWorldContentSecurityPolicy(int worldID, const WebString&)
305 {
306     ASSERT_NOT_REACHED();
307 }
308 
addMessageToConsole(const WebConsoleMessage &)309 void WebRemoteFrameImpl::addMessageToConsole(const WebConsoleMessage&)
310 {
311     ASSERT_NOT_REACHED();
312 }
313 
collectGarbage()314 void WebRemoteFrameImpl::collectGarbage()
315 {
316     ASSERT_NOT_REACHED();
317 }
318 
checkIfRunInsecureContent(const WebURL &) const319 bool WebRemoteFrameImpl::checkIfRunInsecureContent(const WebURL&) const
320 {
321     ASSERT_NOT_REACHED();
322     return false;
323 }
324 
executeScriptAndReturnValue(const WebScriptSource &)325 v8::Handle<v8::Value> WebRemoteFrameImpl::executeScriptAndReturnValue(
326     const WebScriptSource&)
327 {
328     ASSERT_NOT_REACHED();
329     return v8::Handle<v8::Value>();
330 }
331 
executeScriptInIsolatedWorld(int worldID,const WebScriptSource * sourcesIn,unsigned numSources,int extensionGroup,WebVector<v8::Local<v8::Value>> * results)332 void WebRemoteFrameImpl::executeScriptInIsolatedWorld(
333     int worldID, const WebScriptSource* sourcesIn, unsigned numSources,
334     int extensionGroup, WebVector<v8::Local<v8::Value> >* results)
335 {
336     ASSERT_NOT_REACHED();
337 }
338 
callFunctionEvenIfScriptDisabled(v8::Handle<v8::Function>,v8::Handle<v8::Value>,int argc,v8::Handle<v8::Value> argv[])339 v8::Handle<v8::Value> WebRemoteFrameImpl::callFunctionEvenIfScriptDisabled(
340     v8::Handle<v8::Function>,
341     v8::Handle<v8::Value>,
342     int argc,
343     v8::Handle<v8::Value> argv[])
344 {
345     ASSERT_NOT_REACHED();
346     return v8::Handle<v8::Value>();
347 }
348 
mainWorldScriptContext() const349 v8::Local<v8::Context> WebRemoteFrameImpl::mainWorldScriptContext() const
350 {
351     ASSERT_NOT_REACHED();
352     return v8::Local<v8::Context>();
353 }
354 
reload(bool ignoreCache)355 void WebRemoteFrameImpl::reload(bool ignoreCache)
356 {
357     ASSERT_NOT_REACHED();
358 }
359 
reloadWithOverrideURL(const WebURL & overrideUrl,bool ignoreCache)360 void WebRemoteFrameImpl::reloadWithOverrideURL(const WebURL& overrideUrl, bool ignoreCache)
361 {
362     ASSERT_NOT_REACHED();
363 }
364 
loadRequest(const WebURLRequest &)365 void WebRemoteFrameImpl::loadRequest(const WebURLRequest&)
366 {
367     ASSERT_NOT_REACHED();
368 }
369 
loadHistoryItem(const WebHistoryItem &,WebHistoryLoadType,WebURLRequest::CachePolicy)370 void WebRemoteFrameImpl::loadHistoryItem(const WebHistoryItem&, WebHistoryLoadType, WebURLRequest::CachePolicy)
371 {
372     ASSERT_NOT_REACHED();
373 }
374 
loadData(const WebData &,const WebString & mimeType,const WebString & textEncoding,const WebURL & baseURL,const WebURL & unreachableURL,bool replace)375 void WebRemoteFrameImpl::loadData(
376     const WebData&, const WebString& mimeType, const WebString& textEncoding,
377     const WebURL& baseURL, const WebURL& unreachableURL, bool replace)
378 {
379     ASSERT_NOT_REACHED();
380 }
381 
loadHTMLString(const WebData & html,const WebURL & baseURL,const WebURL & unreachableURL,bool replace)382 void WebRemoteFrameImpl::loadHTMLString(
383     const WebData& html, const WebURL& baseURL, const WebURL& unreachableURL,
384     bool replace)
385 {
386     ASSERT_NOT_REACHED();
387 }
388 
isLoading() const389 bool WebRemoteFrameImpl::isLoading() const
390 {
391     ASSERT_NOT_REACHED();
392     return false;
393 }
394 
stopLoading()395 void WebRemoteFrameImpl::stopLoading()
396 {
397     ASSERT_NOT_REACHED();
398 }
399 
provisionalDataSource() const400 WebDataSource* WebRemoteFrameImpl::provisionalDataSource() const
401 {
402     ASSERT_NOT_REACHED();
403     return 0;
404 }
405 
dataSource() const406 WebDataSource* WebRemoteFrameImpl::dataSource() const
407 {
408     ASSERT_NOT_REACHED();
409     return 0;
410 }
411 
enableViewSourceMode(bool enable)412 void WebRemoteFrameImpl::enableViewSourceMode(bool enable)
413 {
414     ASSERT_NOT_REACHED();
415 }
416 
isViewSourceModeEnabled() const417 bool WebRemoteFrameImpl::isViewSourceModeEnabled() const
418 {
419     ASSERT_NOT_REACHED();
420     return false;
421 }
422 
setReferrerForRequest(WebURLRequest &,const WebURL & referrer)423 void WebRemoteFrameImpl::setReferrerForRequest(WebURLRequest&, const WebURL& referrer)
424 {
425     ASSERT_NOT_REACHED();
426 }
427 
dispatchWillSendRequest(WebURLRequest &)428 void WebRemoteFrameImpl::dispatchWillSendRequest(WebURLRequest&)
429 {
430     ASSERT_NOT_REACHED();
431 }
432 
createAssociatedURLLoader(const WebURLLoaderOptions &)433 WebURLLoader* WebRemoteFrameImpl::createAssociatedURLLoader(const WebURLLoaderOptions&)
434 {
435     ASSERT_NOT_REACHED();
436     return 0;
437 }
438 
unloadListenerCount() const439 unsigned WebRemoteFrameImpl::unloadListenerCount() const
440 {
441     ASSERT_NOT_REACHED();
442     return 0;
443 }
444 
replaceSelection(const WebString &)445 void WebRemoteFrameImpl::replaceSelection(const WebString&)
446 {
447     ASSERT_NOT_REACHED();
448 }
449 
insertText(const WebString &)450 void WebRemoteFrameImpl::insertText(const WebString&)
451 {
452     ASSERT_NOT_REACHED();
453 }
454 
setMarkedText(const WebString &,unsigned location,unsigned length)455 void WebRemoteFrameImpl::setMarkedText(const WebString&, unsigned location, unsigned length)
456 {
457     ASSERT_NOT_REACHED();
458 }
459 
unmarkText()460 void WebRemoteFrameImpl::unmarkText()
461 {
462     ASSERT_NOT_REACHED();
463 }
464 
hasMarkedText() const465 bool WebRemoteFrameImpl::hasMarkedText() const
466 {
467     ASSERT_NOT_REACHED();
468     return false;
469 }
470 
markedRange() const471 WebRange WebRemoteFrameImpl::markedRange() const
472 {
473     ASSERT_NOT_REACHED();
474     return WebRange();
475 }
476 
firstRectForCharacterRange(unsigned location,unsigned length,WebRect &) const477 bool WebRemoteFrameImpl::firstRectForCharacterRange(unsigned location, unsigned length, WebRect&) const
478 {
479     ASSERT_NOT_REACHED();
480     return false;
481 }
482 
characterIndexForPoint(const WebPoint &) const483 size_t WebRemoteFrameImpl::characterIndexForPoint(const WebPoint&) const
484 {
485     ASSERT_NOT_REACHED();
486     return 0;
487 }
488 
executeCommand(const WebString &,const WebNode &)489 bool WebRemoteFrameImpl::executeCommand(const WebString&, const WebNode&)
490 {
491     ASSERT_NOT_REACHED();
492     return false;
493 }
494 
executeCommand(const WebString &,const WebString & value,const WebNode &)495 bool WebRemoteFrameImpl::executeCommand(const WebString&, const WebString& value, const WebNode&)
496 {
497     ASSERT_NOT_REACHED();
498     return false;
499 }
500 
isCommandEnabled(const WebString &) const501 bool WebRemoteFrameImpl::isCommandEnabled(const WebString&) const
502 {
503     ASSERT_NOT_REACHED();
504     return false;
505 }
506 
enableContinuousSpellChecking(bool)507 void WebRemoteFrameImpl::enableContinuousSpellChecking(bool)
508 {
509     ASSERT_NOT_REACHED();
510 }
511 
isContinuousSpellCheckingEnabled() const512 bool WebRemoteFrameImpl::isContinuousSpellCheckingEnabled() const
513 {
514     ASSERT_NOT_REACHED();
515     return false;
516 }
517 
requestTextChecking(const WebElement &)518 void WebRemoteFrameImpl::requestTextChecking(const WebElement&)
519 {
520     ASSERT_NOT_REACHED();
521 }
522 
replaceMisspelledRange(const WebString &)523 void WebRemoteFrameImpl::replaceMisspelledRange(const WebString&)
524 {
525     ASSERT_NOT_REACHED();
526 }
527 
removeSpellingMarkers()528 void WebRemoteFrameImpl::removeSpellingMarkers()
529 {
530     ASSERT_NOT_REACHED();
531 }
532 
hasSelection() const533 bool WebRemoteFrameImpl::hasSelection() const
534 {
535     ASSERT_NOT_REACHED();
536     return false;
537 }
538 
selectionRange() const539 WebRange WebRemoteFrameImpl::selectionRange() const
540 {
541     ASSERT_NOT_REACHED();
542     return WebRange();
543 }
544 
selectionAsText() const545 WebString WebRemoteFrameImpl::selectionAsText() const
546 {
547     ASSERT_NOT_REACHED();
548     return WebString();
549 }
550 
selectionAsMarkup() const551 WebString WebRemoteFrameImpl::selectionAsMarkup() const
552 {
553     ASSERT_NOT_REACHED();
554     return WebString();
555 }
556 
selectWordAroundCaret()557 bool WebRemoteFrameImpl::selectWordAroundCaret()
558 {
559     ASSERT_NOT_REACHED();
560     return false;
561 }
562 
selectRange(const WebPoint & base,const WebPoint & extent)563 void WebRemoteFrameImpl::selectRange(const WebPoint& base, const WebPoint& extent)
564 {
565     ASSERT_NOT_REACHED();
566 }
567 
selectRange(const WebRange &)568 void WebRemoteFrameImpl::selectRange(const WebRange&)
569 {
570     ASSERT_NOT_REACHED();
571 }
572 
moveRangeSelection(const WebPoint & base,const WebPoint & extent)573 void WebRemoteFrameImpl::moveRangeSelection(const WebPoint& base, const WebPoint& extent)
574 {
575     ASSERT_NOT_REACHED();
576 }
577 
moveCaretSelection(const WebPoint &)578 void WebRemoteFrameImpl::moveCaretSelection(const WebPoint&)
579 {
580     ASSERT_NOT_REACHED();
581 }
582 
setEditableSelectionOffsets(int start,int end)583 bool WebRemoteFrameImpl::setEditableSelectionOffsets(int start, int end)
584 {
585     ASSERT_NOT_REACHED();
586     return false;
587 }
588 
setCompositionFromExistingText(int compositionStart,int compositionEnd,const WebVector<WebCompositionUnderline> & underlines)589 bool WebRemoteFrameImpl::setCompositionFromExistingText(int compositionStart, int compositionEnd, const WebVector<WebCompositionUnderline>& underlines)
590 {
591     ASSERT_NOT_REACHED();
592     return false;
593 }
594 
extendSelectionAndDelete(int before,int after)595 void WebRemoteFrameImpl::extendSelectionAndDelete(int before, int after)
596 {
597     ASSERT_NOT_REACHED();
598 }
599 
setCaretVisible(bool)600 void WebRemoteFrameImpl::setCaretVisible(bool)
601 {
602     ASSERT_NOT_REACHED();
603 }
604 
printBegin(const WebPrintParams &,const WebNode & constrainToNode)605 int WebRemoteFrameImpl::printBegin(const WebPrintParams&, const WebNode& constrainToNode)
606 {
607     ASSERT_NOT_REACHED();
608     return 0;
609 }
610 
printPage(int pageToPrint,WebCanvas *)611 float WebRemoteFrameImpl::printPage(int pageToPrint, WebCanvas*)
612 {
613     ASSERT_NOT_REACHED();
614     return 0.0;
615 }
616 
getPrintPageShrink(int page)617 float WebRemoteFrameImpl::getPrintPageShrink(int page)
618 {
619     ASSERT_NOT_REACHED();
620     return 0.0;
621 }
622 
printEnd()623 void WebRemoteFrameImpl::printEnd()
624 {
625     ASSERT_NOT_REACHED();
626 }
627 
isPrintScalingDisabledForPlugin(const WebNode &)628 bool WebRemoteFrameImpl::isPrintScalingDisabledForPlugin(const WebNode&)
629 {
630     ASSERT_NOT_REACHED();
631     return false;
632 }
633 
hasCustomPageSizeStyle(int pageIndex)634 bool WebRemoteFrameImpl::hasCustomPageSizeStyle(int pageIndex)
635 {
636     ASSERT_NOT_REACHED();
637     return false;
638 }
639 
isPageBoxVisible(int pageIndex)640 bool WebRemoteFrameImpl::isPageBoxVisible(int pageIndex)
641 {
642     ASSERT_NOT_REACHED();
643     return false;
644 }
645 
pageSizeAndMarginsInPixels(int pageIndex,WebSize & pageSize,int & marginTop,int & marginRight,int & marginBottom,int & marginLeft)646 void WebRemoteFrameImpl::pageSizeAndMarginsInPixels(
647     int pageIndex,
648     WebSize& pageSize,
649     int& marginTop,
650     int& marginRight,
651     int& marginBottom,
652     int& marginLeft)
653 {
654     ASSERT_NOT_REACHED();
655 }
656 
pageProperty(const WebString & propertyName,int pageIndex)657 WebString WebRemoteFrameImpl::pageProperty(const WebString& propertyName, int pageIndex)
658 {
659     ASSERT_NOT_REACHED();
660     return WebString();
661 }
662 
printPagesWithBoundaries(WebCanvas *,const WebSize &)663 void WebRemoteFrameImpl::printPagesWithBoundaries(WebCanvas*, const WebSize&)
664 {
665     ASSERT_NOT_REACHED();
666 }
667 
find(int identifier,const WebString & searchText,const WebFindOptions &,bool wrapWithinFrame,WebRect * selectionRect)668 bool WebRemoteFrameImpl::find(
669     int identifier, const WebString& searchText, const WebFindOptions&,
670     bool wrapWithinFrame, WebRect* selectionRect)
671 {
672     ASSERT_NOT_REACHED();
673     return false;
674 }
675 
stopFinding(bool clearSelection)676 void WebRemoteFrameImpl::stopFinding(bool clearSelection)
677 {
678     ASSERT_NOT_REACHED();
679 }
680 
scopeStringMatches(int identifier,const WebString & searchText,const WebFindOptions &,bool reset)681 void WebRemoteFrameImpl::scopeStringMatches(
682     int identifier, const WebString& searchText, const WebFindOptions&,
683     bool reset)
684 {
685     ASSERT_NOT_REACHED();
686 }
687 
cancelPendingScopingEffort()688 void WebRemoteFrameImpl::cancelPendingScopingEffort()
689 {
690     ASSERT_NOT_REACHED();
691 }
692 
increaseMatchCount(int count,int identifier)693 void WebRemoteFrameImpl::increaseMatchCount(int count, int identifier)
694 {
695     ASSERT_NOT_REACHED();
696 }
697 
resetMatchCount()698 void WebRemoteFrameImpl::resetMatchCount()
699 {
700     ASSERT_NOT_REACHED();
701 }
702 
findMatchMarkersVersion() const703 int WebRemoteFrameImpl::findMatchMarkersVersion() const
704 {
705     ASSERT_NOT_REACHED();
706     return 0;
707 }
708 
activeFindMatchRect()709 WebFloatRect WebRemoteFrameImpl::activeFindMatchRect()
710 {
711     ASSERT_NOT_REACHED();
712     return WebFloatRect();
713 }
714 
findMatchRects(WebVector<WebFloatRect> &)715 void WebRemoteFrameImpl::findMatchRects(WebVector<WebFloatRect>&)
716 {
717     ASSERT_NOT_REACHED();
718 }
719 
selectNearestFindMatch(const WebFloatPoint &,WebRect * selectionRect)720 int WebRemoteFrameImpl::selectNearestFindMatch(const WebFloatPoint&, WebRect* selectionRect)
721 {
722     ASSERT_NOT_REACHED();
723     return 0;
724 }
725 
setTickmarks(const WebVector<WebRect> &)726 void WebRemoteFrameImpl::setTickmarks(const WebVector<WebRect>&)
727 {
728     ASSERT_NOT_REACHED();
729 }
730 
sendOrientationChangeEvent()731 void WebRemoteFrameImpl::sendOrientationChangeEvent()
732 {
733     ASSERT_NOT_REACHED();
734 }
735 
dispatchMessageEventWithOriginCheck(const WebSecurityOrigin & intendedTargetOrigin,const WebDOMEvent &)736 void WebRemoteFrameImpl::dispatchMessageEventWithOriginCheck(
737     const WebSecurityOrigin& intendedTargetOrigin,
738     const WebDOMEvent&)
739 {
740     ASSERT_NOT_REACHED();
741 }
742 
contentAsText(size_t maxChars) const743 WebString WebRemoteFrameImpl::contentAsText(size_t maxChars) const
744 {
745     ASSERT_NOT_REACHED();
746     return WebString();
747 }
748 
contentAsMarkup() const749 WebString WebRemoteFrameImpl::contentAsMarkup() const
750 {
751     ASSERT_NOT_REACHED();
752     return WebString();
753 }
754 
renderTreeAsText(RenderAsTextControls toShow) const755 WebString WebRemoteFrameImpl::renderTreeAsText(RenderAsTextControls toShow) const
756 {
757     ASSERT_NOT_REACHED();
758     return WebString();
759 }
760 
markerTextForListItem(const WebElement &) const761 WebString WebRemoteFrameImpl::markerTextForListItem(const WebElement&) const
762 {
763     ASSERT_NOT_REACHED();
764     return WebString();
765 }
766 
selectionBoundsRect() const767 WebRect WebRemoteFrameImpl::selectionBoundsRect() const
768 {
769     ASSERT_NOT_REACHED();
770     return WebRect();
771 }
772 
selectionStartHasSpellingMarkerFor(int from,int length) const773 bool WebRemoteFrameImpl::selectionStartHasSpellingMarkerFor(int from, int length) const
774 {
775     ASSERT_NOT_REACHED();
776     return false;
777 }
778 
layerTreeAsText(bool showDebugInfo) const779 WebString WebRemoteFrameImpl::layerTreeAsText(bool showDebugInfo) const
780 {
781     ASSERT_NOT_REACHED();
782     return WebString();
783 }
784 
createLocalChild(const WebString & name,WebFrameClient * client)785 WebLocalFrame* WebRemoteFrameImpl::createLocalChild(const WebString& name, WebFrameClient* client)
786 {
787     WebLocalFrameImpl* child = toWebLocalFrameImpl(WebLocalFrame::create(client));
788     HashMap<WebFrame*, OwnPtr<FrameOwner> >::AddResult result =
789         m_ownersForChildren.add(child, adoptPtr(new RemoteBridgeFrameOwner(child)));
790     appendChild(child);
791     // FIXME: currently this calls LocalFrame::init() on the created LocalFrame, which may
792     // result in the browser observing two navigations to about:blank (one from the initial
793     // frame creation, and one from swapping it into the remote process). FrameLoader might
794     // need a special initialization function for this case to avoid that duplicate navigation.
795     child->initializeAsChildFrame(frame()->host(), result.storedValue->value.get(), name, AtomicString());
796     // Partially related with the above FIXME--the init() call may trigger JS dispatch. However,
797     // if the parent is remote, it should never be detached synchronously...
798     ASSERT(child->frame());
799     return child;
800 }
801 
initializeAsMainFrame(Page * page)802 void WebRemoteFrameImpl::initializeAsMainFrame(Page* page)
803 {
804     setWebCoreFrame(RemoteFrame::create(&m_frameClient, &page->frameHost(), 0));
805 }
806 
createRemoteChild(const WebString & name,WebFrameClient * client)807 WebRemoteFrame* WebRemoteFrameImpl::createRemoteChild(const WebString& name, WebFrameClient* client)
808 {
809     WebRemoteFrameImpl* child = toWebRemoteFrameImpl(WebRemoteFrame::create(client));
810     HashMap<WebFrame*, OwnPtr<FrameOwner> >::AddResult result =
811         m_ownersForChildren.add(child, adoptPtr(new PlaceholderFrameOwner));
812     appendChild(child);
813     RefPtr<RemoteFrame> childFrame = RemoteFrame::create(&child->m_frameClient, frame()->host(), result.storedValue->value.get());
814     child->setWebCoreFrame(childFrame);
815     childFrame->tree().setName(name, AtomicString());
816     return child;
817 }
818 
setWebCoreFrame(PassRefPtr<RemoteFrame> frame)819 void WebRemoteFrameImpl::setWebCoreFrame(PassRefPtr<RemoteFrame> frame)
820 {
821     m_frame = frame;
822 }
823 
fromFrame(RemoteFrame & frame)824 WebRemoteFrameImpl* WebRemoteFrameImpl::fromFrame(RemoteFrame& frame)
825 {
826     if (!frame.client())
827         return 0;
828     return static_cast<RemoteFrameClient*>(frame.client())->webFrame();
829 }
830 
831 } // namespace blink
832 
833