Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15239)
+++ ChangeLog	(working copy)
@@ -1,3 +1,11 @@
+2006-07-08  Justin Haygood <jhaygood@spsu.edu>
+
+        Reviewed by NOBODY (OOPS!).
+
+        * COM/WebFrame.cpp:
+        (WebFrame::createChildFrame):
+        * COM/WebFrame.h:
+
 2006-07-08  Darin Adler  <darin@apple.com>
 
         * DefaultDelegates/WebDefaultContextMenuDelegate.m:
Index: COM/WebFrame.cpp
===================================================================
--- COM/WebFrame.cpp	(revision 15239)
+++ COM/WebFrame.cpp	(working copy)
@@ -30,10 +30,12 @@
 #include "WebMutableURLRequest.h"
 #include "WebFrame.h"
 #include "WebView.h"
+#include "WebKit.h"
 #include "WebDataSource.h"
 #include "WebHistoryItem.h"
 
 #pragma warning( push, 0 )
+#include "Element.h"
 #include "Cache.h"
 #include "Document.h"
 #include "FrameView.h"
@@ -577,9 +579,81 @@ void WebFrame::setStatusText(const Strin
 {
     IWebUIDelegate* uiDelegate;
     if (SUCCEEDED(d->webView->uiDelegate(&uiDelegate))) {
+
+		if(uiDelegate == NULL) return;
+
         BSTR statusBStr = SysAllocStringLen(statusText.characters(), statusText.length());
         uiDelegate->setStatusText(d->webView, statusBStr);
         SysFreeString(statusBStr);
         uiDelegate->Release();
     }
-}
\ No newline at end of file
+}
+
+
+WebCore::FrameWin* WebFrame::createChildFrame(const KURL &url, const WebCore::String &name, WebCore::Element *ownerElement)
+{
+
+    IWebView* COMview = 0;
+
+    CoCreateInstance(CLSID_WebView, 0, CLSCTX_ALL, IID_IWebView, (void**)&COMview);
+
+    WebView* view = (WebView*)COMview;
+
+    RECT rect;
+
+    WebCore::HTMLFrameElement* frameElement = (HTMLFrameElement*)ownerElement;
+
+    rect.bottom = frameElement->offsetTop() + frameElement->offsetHeight();
+    rect.right = frameElement->offsetLeft() + frameElement->offsetWidth();
+    rect.left = frameElement->offsetTop();
+    rect.top = frameElement->offsetLeft();
+
+    view->initWithFrame( &rect, SysAllocString( name.characters() ), 0);
+
+    IWebFrameLoadDelegate* frameLoadDelegate;
+    
+    d->webView->frameLoadDelegate( &frameLoadDelegate );
+
+    view->setFrameLoadDelegate( frameLoadDelegate );
+
+    HWND viewWindow;
+
+    d->webView->viewWindow( &viewWindow );
+
+    view->setHostWindow( viewWindow );
+
+
+    IWebFrame *webFrame;
+    
+    
+    view->mainFrame( &webFrame );
+
+    assert( webFrame != this );
+
+    WebFrame *frame = (WebFrame*)(webFrame);
+
+    String urlString = url.url();
+
+    BSTR urlBStr = SysAllocString( urlString.characters() );
+
+    IWebMutableURLRequest* request = 0;
+    CoCreateInstance(CLSID_WebMutableURLRequest, 0, CLSCTX_ALL, IID_IWebMutableURLRequest, (void**)&request);
+    request->initWithURL(urlBStr, WebURLRequestUseProtocolCachePolicy, 0);
+
+    frame->loadRequest( request );
+
+    HWND winView;
+
+    view->viewWindow( &winView );
+
+    MoveWindow( winView, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, true);
+
+    ShowWindow( winView, SW_SHOW );
+    UpdateWindow( winView );
+
+    return WebCore::Win(frame->impl());
+
+ 
+
+}
+
Index: COM/WebFrame.h
===================================================================
--- COM/WebFrame.h	(revision 15239)
+++ COM/WebFrame.h	(working copy)
@@ -38,6 +38,8 @@
 
 namespace WebCore {
     class Frame;
+    class FrameWin;
+    class Element;
 }
 
 typedef enum {
@@ -141,6 +143,7 @@ public:
     virtual void submitForm(const WebCore::String& method, const KURL&, const WebCore::FormData*);
     virtual void setTitle(const WebCore::String& title);
     virtual void setStatusText(const WebCore::String& title);
+    virtual WebCore::FrameWin* createChildFrame( const KURL&, const WebCore::String &name, WebCore::Element *ownerElement );
 
     // WebFrame
     void paint();
@@ -162,6 +165,8 @@ protected:
     IWebDataSource*      m_provisionalDataSource;
     WebFrameLoadType    m_loadType;
     bool                m_quickRedirectComing;
+
+
 };
 
 #endif
