1 /* 2 * Copyright (C) 2006 Don Gibson <dgibson77 (at) gmail.com> 3 * Copyright (C) 2006 Zack Rusin <zack (at) kde.org> 4 * Copyright (C) 2006, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2007 Trolltech ASA 6 * Copyright (C) 2007 Ryan Leavengood <leavengood (at) gmail.com> All rights reserved. 7 * Copyright (C) 2009 Maxime Simon <simon.maxime (at) gmail.com> All rights reserved. 8 * 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 20 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 27 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #include "config.h" 33 #include "FrameLoaderClientHaiku.h" 34 35 #include "DocumentLoader.h" 36 #include "Frame.h" 37 #include "FrameLoader.h" 38 #include "FrameTree.h" 39 #include "FrameView.h" 40 #include "HTMLFrameOwnerElement.h" 41 #include "NotImplemented.h" 42 #include "Page.h" 43 #include "PlatformString.h" 44 #include "ResourceRequest.h" 45 #include "ScriptController.h" 46 #include "WebView.h" 47 48 #include <Message.h> 49 #include <String.h> 50 51 #include <app/Messenger.h> 52 53 54 namespace WebCore { 55 56 FrameLoaderClientHaiku::FrameLoaderClientHaiku() 57 : m_frame(0) 58 { 59 } 60 61 void FrameLoaderClientHaiku::setFrame(Frame* frame) 62 { 63 m_frame = frame; 64 } 65 66 void FrameLoaderClientHaiku::setWebView(WebView* webview) 67 { 68 m_webView = webview; 69 m_messenger = new BMessenger(m_webView); 70 ASSERT(m_messenger->IsValid()); 71 } 72 73 void FrameLoaderClientHaiku::detachFrameLoader() 74 { 75 m_frame = 0; 76 } 77 78 bool FrameLoaderClientHaiku::hasWebView() const 79 { 80 return m_webView; 81 } 82 83 bool FrameLoaderClientHaiku::hasBackForwardList() const 84 { 85 notImplemented(); 86 return true; 87 } 88 89 void FrameLoaderClientHaiku::resetBackForwardList() 90 { 91 notImplemented(); 92 } 93 94 bool FrameLoaderClientHaiku::provisionalItemIsTarget() const 95 { 96 notImplemented(); 97 return false; 98 } 99 100 void FrameLoaderClientHaiku::makeRepresentation(DocumentLoader*) 101 { 102 notImplemented(); 103 } 104 105 void FrameLoaderClientHaiku::forceLayout() 106 { 107 notImplemented(); 108 } 109 110 void FrameLoaderClientHaiku::forceLayoutForNonHTML() 111 { 112 notImplemented(); 113 } 114 115 void FrameLoaderClientHaiku::updateHistoryForCommit() 116 { 117 notImplemented(); 118 } 119 120 void FrameLoaderClientHaiku::updateHistoryForBackForwardNavigation() 121 { 122 notImplemented(); 123 } 124 125 void FrameLoaderClientHaiku::updateHistoryForReload() 126 { 127 notImplemented(); 128 } 129 130 void FrameLoaderClientHaiku::updateHistoryForStandardLoad() 131 { 132 notImplemented(); 133 } 134 135 void FrameLoaderClientHaiku::updateHistoryForInternalLoad() 136 { 137 notImplemented(); 138 } 139 140 void FrameLoaderClientHaiku::updateHistoryAfterClientRedirect() 141 { 142 notImplemented(); 143 } 144 145 void FrameLoaderClientHaiku::setCopiesOnScroll() 146 { 147 // apparently mac specific 148 notImplemented(); 149 } 150 151 LoadErrorResetToken* FrameLoaderClientHaiku::tokenForLoadErrorReset() 152 { 153 notImplemented(); 154 return 0; 155 } 156 157 void FrameLoaderClientHaiku::resetAfterLoadError(LoadErrorResetToken*) 158 { 159 notImplemented(); 160 } 161 162 void FrameLoaderClientHaiku::doNotResetAfterLoadError(LoadErrorResetToken*) 163 { 164 notImplemented(); 165 } 166 167 void FrameLoaderClientHaiku::willCloseDocument() 168 { 169 notImplemented(); 170 } 171 172 void FrameLoaderClientHaiku::detachedFromParent2() 173 { 174 notImplemented(); 175 } 176 177 void FrameLoaderClientHaiku::detachedFromParent3() 178 { 179 notImplemented(); 180 } 181 182 void FrameLoaderClientHaiku::dispatchDidHandleOnloadEvents() 183 { 184 if (m_webView) { 185 BMessage message(LOAD_ONLOAD_HANDLE); 186 message.AddString("url", m_frame->loader()->documentLoader()->request().url().string()); 187 m_messenger->SendMessage(&message); 188 } 189 } 190 191 void FrameLoaderClientHaiku::dispatchDidReceiveServerRedirectForProvisionalLoad() 192 { 193 notImplemented(); 194 } 195 196 void FrameLoaderClientHaiku::dispatchDidCancelClientRedirect() 197 { 198 notImplemented(); 199 } 200 201 void FrameLoaderClientHaiku::dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate) 202 { 203 notImplemented(); 204 } 205 206 void FrameLoaderClientHaiku::dispatchDidChangeLocationWithinPage() 207 { 208 notImplemented(); 209 } 210 211 void FrameLoaderClientHaiku::dispatchDidPushStateWithinPage() 212 { 213 notImplemented(); 214 } 215 216 void FrameLoaderClientHaiku::dispatchDidReplaceStateWithinPage() 217 { 218 notImplemented(); 219 } 220 221 void FrameLoaderClientHaiku::dispatchDidPopStateWithinPage() 222 { 223 notImplemented(); 224 } 225 226 void FrameLoaderClientHaiku::dispatchWillClose() 227 { 228 notImplemented(); 229 } 230 231 void FrameLoaderClientHaiku::dispatchDidStartProvisionalLoad() 232 { 233 if (m_webView) { 234 BMessage message(LOAD_NEGOCIATING); 235 message.AddString("url", m_frame->loader()->provisionalDocumentLoader()->request().url().string()); 236 m_messenger->SendMessage(&message); 237 } 238 } 239 240 void FrameLoaderClientHaiku::dispatchDidReceiveTitle(const StringWithTitle& title) 241 { 242 if (m_webView) { 243 // FIXME: use direction of title. 244 m_webView->SetPageTitle(title.m_string()); 245 BMessage message(TITLE_CHANGED); 246 message.AddString("title", title.string()); 247 m_messenger->SendMessage(&message); 248 } 249 } 250 251 void FrameLoaderClientHaiku::dispatchDidCommitLoad() 252 { 253 if (m_webView) { 254 BMessage message(LOAD_TRANSFERRING); 255 message.AddString("url", m_frame->loader()->documentLoader()->request().url().string()); 256 m_messenger->SendMessage(&message); 257 } 258 } 259 260 void FrameLoaderClientHaiku::dispatchDidFinishDocumentLoad() 261 { 262 if (m_webView) { 263 BMessage message(LOAD_DOC_COMPLETED); 264 message.AddString("url", m_frame->document()->url().string()); 265 m_messenger->SendMessage(&message); 266 } 267 } 268 269 void FrameLoaderClientHaiku::dispatchDidFinishLoad() 270 { 271 notImplemented(); 272 } 273 274 void FrameLoaderClientHaiku::dispatchDidFirstLayout() 275 { 276 notImplemented(); 277 } 278 279 void FrameLoaderClientHaiku::dispatchDidFirstVisuallyNonEmptyLayout() 280 { 281 notImplemented(); 282 } 283 284 void FrameLoaderClientHaiku::dispatchShow() 285 { 286 notImplemented(); 287 } 288 289 void FrameLoaderClientHaiku::cancelPolicyCheck() 290 { 291 notImplemented(); 292 } 293 294 void FrameLoaderClientHaiku::dispatchWillSubmitForm(FramePolicyFunction function, PassRefPtr<FormState>) 295 { 296 // FIXME: Send an event to allow for alerts and cancellation. 297 if (!m_frame) 298 return; 299 (m_frame->loader()->policyChecker()->*function)(PolicyUse); 300 } 301 302 void FrameLoaderClientHaiku::dispatchDidLoadMainResource(DocumentLoader*) 303 { 304 notImplemented(); 305 } 306 307 void FrameLoaderClientHaiku::revertToProvisionalState(DocumentLoader*) 308 { 309 notImplemented(); 310 } 311 312 void FrameLoaderClientHaiku::postProgressStartedNotification() 313 { 314 notImplemented(); 315 } 316 317 void FrameLoaderClientHaiku::postProgressEstimateChangedNotification() 318 { 319 notImplemented(); 320 } 321 322 void FrameLoaderClientHaiku::postProgressFinishedNotification() 323 { 324 if (m_webView) { 325 BMessage message(LOAD_DL_COMPLETED); 326 message.AddString("url", m_frame->document()->url().string()); 327 m_messenger->SendMessage(&message); 328 } 329 } 330 331 void FrameLoaderClientHaiku::progressStarted() 332 { 333 notImplemented(); 334 } 335 336 337 void FrameLoaderClientHaiku::progressCompleted() 338 { 339 notImplemented(); 340 } 341 342 343 void FrameLoaderClientHaiku::setMainFrameDocumentReady(bool) 344 { 345 notImplemented(); 346 // this is only interesting once we provide an external API for the DOM 347 } 348 349 void FrameLoaderClientHaiku::willChangeTitle(DocumentLoader*) 350 { 351 notImplemented(); 352 } 353 354 void FrameLoaderClientHaiku::didChangeTitle(DocumentLoader* docLoader) 355 { 356 setTitle(docLoader->title(), docLoader->url()); 357 } 358 359 void FrameLoaderClientHaiku::finishedLoading(DocumentLoader*) 360 { 361 notImplemented(); 362 } 363 364 bool FrameLoaderClientHaiku::canShowMIMETypeAsHTML(const String& MIMEType) const 365 { 366 notImplemented(); 367 return false; 368 } 369 370 bool FrameLoaderClientHaiku::canShowMIMEType(const String& MIMEType) const 371 { 372 notImplemented(); 373 return true; 374 } 375 376 bool FrameLoaderClientHaiku::representationExistsForURLScheme(const String& URLScheme) const 377 { 378 notImplemented(); 379 return false; 380 } 381 382 String FrameLoaderClientHaiku::generatedMIMETypeForURLScheme(const String& URLScheme) const 383 { 384 notImplemented(); 385 return String(); 386 } 387 388 void FrameLoaderClientHaiku::frameLoadCompleted() 389 { 390 if (m_webView->LockLooper()) { 391 m_webView->Draw(m_webView->Bounds()); 392 m_webView->UnlockLooper(); 393 } 394 } 395 396 void FrameLoaderClientHaiku::saveViewStateToItem(HistoryItem*) 397 { 398 notImplemented(); 399 } 400 401 void FrameLoaderClientHaiku::restoreViewState() 402 { 403 notImplemented(); 404 } 405 406 void FrameLoaderClientHaiku::restoreScrollPositionAndViewState() 407 { 408 notImplemented(); 409 } 410 411 void FrameLoaderClientHaiku::provisionalLoadStarted() 412 { 413 notImplemented(); 414 } 415 416 bool FrameLoaderClientHaiku::shouldTreatURLAsSameAsCurrent(const KURL&) const 417 { 418 notImplemented(); 419 return false; 420 } 421 422 void FrameLoaderClientHaiku::addHistoryItemForFragmentScroll() 423 { 424 notImplemented(); 425 } 426 427 void FrameLoaderClientHaiku::didFinishLoad() 428 { 429 notImplemented(); 430 } 431 432 void FrameLoaderClientHaiku::prepareForDataSourceReplacement() 433 { 434 notImplemented(); 435 } 436 437 void FrameLoaderClientHaiku::setTitle(const String& title, const KURL&) 438 { 439 notImplemented(); 440 } 441 442 String FrameLoaderClientHaiku::userAgent(const KURL&) 443 { 444 return String("Mozilla/5.0 (compatible; U; InfiNet 0.1; Haiku) AppleWebKit/420+ (KHTML, like Gecko)"); 445 } 446 447 void FrameLoaderClientHaiku::dispatchDidReceiveIcon() 448 { 449 notImplemented(); 450 } 451 452 void FrameLoaderClientHaiku::frameLoaderDestroyed() 453 { 454 m_frame = 0; 455 m_messenger = 0; 456 delete this; 457 } 458 459 bool FrameLoaderClientHaiku::canHandleRequest(const WebCore::ResourceRequest&) const 460 { 461 notImplemented(); 462 return true; 463 } 464 465 void FrameLoaderClientHaiku::partClearedInBegin() 466 { 467 notImplemented(); 468 } 469 470 void FrameLoaderClientHaiku::updateGlobalHistory() 471 { 472 notImplemented(); 473 } 474 475 void FrameLoaderClientHaiku::updateGlobalHistoryRedirectLinks() 476 { 477 notImplemented(); 478 } 479 480 bool FrameLoaderClientHaiku::shouldGoToHistoryItem(WebCore::HistoryItem*) const 481 { 482 notImplemented(); 483 return true; 484 } 485 486 bool FrameLoaderClientHaiku::shouldStopLoadingForHistoryItem(WebCore::HistoryItem*) const 487 { 488 return true; 489 } 490 491 void FrameLoaderClientHaiku::dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const 492 { 493 } 494 495 void FrameLoaderClientHaiku::dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const 496 { 497 } 498 499 void FrameLoaderClientHaiku::dispatchDidChangeBackForwardIndex() const 500 { 501 } 502 503 void FrameLoaderClientHaiku::saveScrollPositionAndViewStateToItem(WebCore::HistoryItem*) 504 { 505 notImplemented(); 506 } 507 508 bool FrameLoaderClientHaiku::canCachePage() const 509 { 510 return false; 511 } 512 513 void FrameLoaderClientHaiku::setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) 514 { 515 notImplemented(); 516 } 517 518 void FrameLoaderClientHaiku::committedLoad(WebCore::DocumentLoader* loader, const char* data, int length) 519 { 520 loader->commitData(data, length); 521 } 522 523 WebCore::ResourceError FrameLoaderClientHaiku::cancelledError(const WebCore::ResourceRequest& request) 524 { 525 notImplemented(); 526 return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); 527 } 528 529 WebCore::ResourceError FrameLoaderClientHaiku::blockedError(const ResourceRequest& request) 530 { 531 notImplemented(); 532 return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); 533 } 534 535 WebCore::ResourceError FrameLoaderClientHaiku::cannotShowURLError(const WebCore::ResourceRequest& request) 536 { 537 return ResourceError(String(), WebKitErrorCannotShowURL, request.url().string(), String()); 538 } 539 540 WebCore::ResourceError FrameLoaderClientHaiku::interruptForPolicyChangeError(const WebCore::ResourceRequest& request) 541 { 542 notImplemented(); 543 return ResourceError(String(), WebKitErrorFrameLoadInterruptedByPolicyChange, request.url().string(), String()); 544 } 545 546 WebCore::ResourceError FrameLoaderClientHaiku::cannotShowMIMETypeError(const WebCore::ResourceResponse& response) 547 { 548 notImplemented(); 549 return ResourceError(String(), WebKitErrorCannotShowMIMEType, response.url().string(), String()); 550 } 551 552 WebCore::ResourceError FrameLoaderClientHaiku::fileDoesNotExistError(const WebCore::ResourceResponse& response) 553 { 554 notImplemented(); 555 return ResourceError(String(), WebKitErrorCannotShowURL, response.url().string(), String()); 556 } 557 558 bool FrameLoaderClientHaiku::shouldFallBack(const WebCore::ResourceError& error) 559 { 560 notImplemented(); 561 return false; 562 } 563 564 WTF::PassRefPtr<DocumentLoader> FrameLoaderClientHaiku::createDocumentLoader(const ResourceRequest& request, 565 const SubstituteData& substituteData) 566 { 567 return DocumentLoader::create(request, substituteData); 568 } 569 570 void FrameLoaderClientHaiku::download(ResourceHandle*, const ResourceRequest&, 571 const ResourceRequest&, const ResourceResponse&) 572 { 573 notImplemented(); 574 } 575 576 void FrameLoaderClientHaiku::assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, 577 const ResourceRequest&) 578 { 579 notImplemented(); 580 } 581 582 void FrameLoaderClientHaiku::dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest& request, 583 const ResourceResponse& response) 584 { 585 notImplemented(); 586 } 587 588 bool FrameLoaderClientHaiku::shouldUseCredentialStorage(DocumentLoader*, unsigned long) 589 { 590 notImplemented(); 591 return false; 592 } 593 594 void FrameLoaderClientHaiku::dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, 595 unsigned long, const AuthenticationChallenge&) 596 { 597 notImplemented(); 598 } 599 600 void FrameLoaderClientHaiku::dispatchDidCancelAuthenticationChallenge(DocumentLoader*, 601 unsigned long, const AuthenticationChallenge&) 602 { 603 notImplemented(); 604 } 605 606 void FrameLoaderClientHaiku::dispatchDidReceiveResponse(DocumentLoader* loader, unsigned long id, 607 const ResourceResponse& response) 608 { 609 notImplemented(); 610 m_response = response; 611 m_firstData = true; 612 } 613 614 void FrameLoaderClientHaiku::dispatchDidReceiveContentLength(DocumentLoader* loader, 615 unsigned long id, int length) 616 { 617 notImplemented(); 618 } 619 620 void FrameLoaderClientHaiku::dispatchDidFinishLoading(DocumentLoader*, unsigned long) 621 { 622 notImplemented(); 623 } 624 625 void FrameLoaderClientHaiku::dispatchDidFailLoading(DocumentLoader* loader, 626 unsigned long, const ResourceError&) 627 { 628 if (m_webView) { 629 BMessage message(LOAD_FAILED); 630 message.AddString("url", m_frame->loader()->documentLoader()->request().url().string()); 631 m_messenger->SendMessage(&message); 632 } 633 } 634 635 bool FrameLoaderClientHaiku::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, 636 const ResourceRequest&, 637 const ResourceResponse&, int) 638 { 639 notImplemented(); 640 return false; 641 } 642 643 void FrameLoaderClientHaiku::dispatchDidFailProvisionalLoad(const ResourceError&) 644 { 645 notImplemented(); 646 } 647 648 void FrameLoaderClientHaiku::dispatchDidFailLoad(const ResourceError&) 649 { 650 notImplemented(); 651 } 652 653 Frame* FrameLoaderClientHaiku::dispatchCreatePage(const WebCore::NavigationAction&) 654 { 655 notImplemented(); 656 return false; 657 } 658 659 void FrameLoaderClientHaiku::dispatchDecidePolicyForResponse(FramePolicyFunction function, 660 const ResourceResponse& response, 661 const ResourceRequest& request) 662 { 663 if (!m_frame) 664 return; 665 666 notImplemented(); 667 (m_frame->loader()->policyChecker()->*function)(PolicyUse); 668 } 669 670 void FrameLoaderClientHaiku::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, 671 const NavigationAction&, 672 const ResourceRequest& request, 673 PassRefPtr<FormState>, const String& targetName) 674 { 675 if (!m_frame) 676 return; 677 678 if (m_webView) { 679 BMessage message(NEW_WINDOW_REQUESTED); 680 message.AddString("url", request.url().string()); 681 if (m_messenger->SendMessage(&message)) { 682 (m_frame->loader()->policyChecker()->*function)(PolicyIgnore); 683 return; 684 } 685 } 686 687 (m_frame->loader()->policyChecker()->*function)(PolicyUse); 688 } 689 690 void FrameLoaderClientHaiku::dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, 691 const NavigationAction& action, 692 const ResourceRequest& request, 693 PassRefPtr<FormState>) 694 { 695 if (!m_frame || !function) 696 return; 697 698 if (m_webView) { 699 BMessage message(NAVIGATION_REQUESTED); 700 message.AddString("url", request.url().string()); 701 m_messenger->SendMessage(&message); 702 703 (m_frame->loader()->policyChecker()->*function)(PolicyUse); 704 } 705 } 706 707 void FrameLoaderClientHaiku::dispatchUnableToImplementPolicy(const ResourceError&) 708 { 709 notImplemented(); 710 } 711 712 void FrameLoaderClientHaiku::startDownload(const ResourceRequest&) 713 { 714 notImplemented(); 715 } 716 717 PassRefPtr<Frame> FrameLoaderClientHaiku::createFrame(const KURL& url, const String& name, 718 HTMLFrameOwnerElement* ownerElement, 719 const String& referrer, bool allowsScrolling, 720 int marginWidth, int marginHeight) 721 { 722 // FIXME: We should apply the right property to the frameView. (scrollbar,margins) 723 724 RefPtr<Frame> childFrame = Frame::create(m_frame->page(), ownerElement, this); 725 setFrame(childFrame.get()); 726 727 RefPtr<FrameView> frameView = FrameView::create(childFrame.get()); 728 729 frameView->setAllowsScrolling(allowsScrolling); 730 frameView->deref(); 731 childFrame->setView(frameView.get()); 732 childFrame->init(); 733 734 childFrame->tree()->setName(name); 735 m_frame->tree()->appendChild(childFrame); 736 737 m_frame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get()); 738 739 // The frame's onload handler may have removed it from the document. 740 if (!childFrame->tree()->parent()) 741 return 0; 742 743 return childFrame.release(); 744 745 notImplemented(); 746 return 0; 747 } 748 749 void FrameLoaderClientHaiku::didTransferChildFrameToNewDocument(Page*) 750 { 751 } 752 753 void FrameLoaderClientHaiku::transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*) 754 { 755 } 756 757 ObjectContentType FrameLoaderClientHaiku::objectContentType(const KURL& url, const String& mimeType, bool shouldPreferPlugInsForImages) 758 { 759 notImplemented(); 760 return ObjectContentType(); 761 } 762 763 PassRefPtr<Widget> FrameLoaderClientHaiku::createPlugin(const IntSize&, HTMLPlugInElement*, 764 const KURL&, const Vector<String>&, 765 const Vector<String>&, const String&, 766 bool loadManually) 767 { 768 notImplemented(); 769 return 0; 770 } 771 772 void FrameLoaderClientHaiku::redirectDataToPlugin(Widget* pluginWidget) 773 { 774 notImplemented(); 775 return; 776 } 777 778 ResourceError FrameLoaderClientHaiku::pluginWillHandleLoadError(const ResourceResponse& response) 779 { 780 notImplemented(); 781 return ResourceError(String(), WebKitErrorCannotLoadPlugIn, response.url().string(), String()); 782 } 783 784 PassRefPtr<Widget> FrameLoaderClientHaiku::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, 785 const KURL& baseURL, 786 const Vector<String>& paramNames, 787 const Vector<String>& paramValues) 788 { 789 notImplemented(); 790 return 0; 791 } 792 793 String FrameLoaderClientHaiku::overrideMediaType() const 794 { 795 notImplemented(); 796 return String(); 797 } 798 799 void FrameLoaderClientHaiku::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world) 800 { 801 if (world != mainThreadNormalWorld()) 802 return; 803 804 if (m_webView) { 805 BMessage message(JAVASCRIPT_WINDOW_OBJECT_CLEARED); 806 m_messenger->SendMessage(&message); 807 } 808 } 809 810 void FrameLoaderClientHaiku::documentElementAvailable() 811 { 812 } 813 814 void FrameLoaderClientHaiku::didPerformFirstNavigation() const 815 { 816 notImplemented(); 817 } 818 819 void FrameLoaderClientHaiku::registerForIconNotification(bool listen) 820 { 821 notImplemented(); 822 } 823 824 void FrameLoaderClientHaiku::savePlatformDataToCachedFrame(CachedFrame*) 825 { 826 notImplemented(); 827 } 828 829 void FrameLoaderClientHaiku::transitionToCommittedFromCachedFrame(CachedFrame*) 830 { 831 notImplemented(); 832 } 833 834 void FrameLoaderClientHaiku::transitionToCommittedForNewPage() 835 { 836 ASSERT(m_frame); 837 ASSERT(m_webView); 838 839 Page* page = m_frame->page(); 840 ASSERT(page); 841 842 bool isMainFrame = m_frame == page->mainFrame(); 843 844 m_frame->setView(0); 845 846 RefPtr<FrameView> frameView; 847 if (isMainFrame) { 848 if (m_webView->LockLooper()) { 849 // We lock the looper in order to get the bounds of the WebView. 850 frameView = FrameView::create(m_frame, IntRect(m_webView->Bounds()).size()); 851 m_webView->UnlockLooper(); 852 } 853 } else 854 frameView = FrameView::create(m_frame); 855 856 ASSERT(frameView); 857 m_frame->setView(frameView); 858 859 frameView->setPlatformWidget(m_webView); 860 861 if (HTMLFrameOwnerElement* owner = m_frame->ownerElement()) 862 m_frame->view()->setScrollbarModes(owner->scrollingMode(), owner->scrollingMode()); 863 } 864 865 void FrameLoaderClientHaiku::didSaveToPageCache() 866 { 867 } 868 869 void FrameLoaderClientHaiku::didRestoreFromPageCache() 870 { 871 } 872 873 void FrameLoaderClientHaiku::dispatchDidBecomeFrameset(bool) 874 { 875 } 876 877 } // namespace WebCore 878