You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/04/06 17:06:04 UTC

[06/50] [abbrv] git commit: [flex-asjs] [refs/heads/master] - Added WebBrowser component. For SWF, it uses HTMLLoader. For JS, it uses iFrame. In the Mobile project, a special view bead uses StageWebView.

Added WebBrowser component. For SWF, it uses HTMLLoader. For JS, it uses iFrame. In the Mobile project, a special view bead uses StageWebView.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/18deeaec
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/18deeaec
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/18deeaec

Branch: refs/heads/master
Commit: 18deeaecfef2035032ef56f2f1b12bba70bedd59
Parents: 9080199
Author: Peter Ent <pe...@apache.org>
Authored: Tue Feb 9 16:50:52 2016 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Tue Feb 9 16:50:52 2016 -0500

----------------------------------------------------------------------
 .../projects/HTML/src/main/flex/HTMLClasses.as  |   3 +
 .../flex/org/apache/flex/html/WebBrowser.as     | 145 ++++++++++++++
 .../apache/flex/html/beads/WebBrowserView.as    | 198 +++++++++++++++++++
 .../flex/html/beads/models/WebBrowserModel.as   | 100 ++++++++++
 .../HTML/src/main/resources/basic-manifest.xml  |   2 +
 .../HTML/src/main/resources/defaults.css        |   6 +
 .../Mobile/src/main/flex/MobileClasses.as       |   4 +
 .../flex/mobile/beads/MobileWebBrowserView.as   | 129 ++++++++++++
 8 files changed, 587 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
index 052ab95..80073e7 100644
--- a/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
+++ b/frameworks/projects/HTML/src/main/flex/HTMLClasses.as
@@ -163,6 +163,9 @@ internal class HTMLClasses
     import org.apache.flex.html.MXMLBeadViewBase; MXMLBeadViewBase;
     import org.apache.flex.html.beads.TitleBarView; TitleBarView;
     import org.apache.flex.html.beads.TitleBarMeasurementBead; TitleBarMeasurementBead;
+	
+	import org.apache.flex.html.beads.WebBrowserView; WebBrowserView;
+	import org.apache.flex.html.beads.models.WebBrowserModel; WebBrowserModel;
 
 	COMPILE::AS3
 	{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/WebBrowser.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/WebBrowser.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/WebBrowser.as
new file mode 100644
index 0000000..009a508
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/WebBrowser.as
@@ -0,0 +1,145 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.html
+{
+	COMPILE::AS3 {
+		import flash.events.Event;
+		import flash.html.HTMLLoader;
+		import flash.net.URLRequest;
+
+		import org.apache.flex.events.utils.IHandlesOriginalEvent;
+	}
+	COMPILE::JS
+	{
+		import org.apache.flex.core.WrappedHTMLElement;
+	}
+
+	import org.apache.flex.core.UIBase
+	import org.apache.flex.html.beads.models.WebBrowserModel;
+
+	/**
+	 * Dispatched whenever the WebBrowser's location has been changed.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	[Event(name="locationChanged", type="org.apache.flex.events.Event")]
+
+	/**
+	 * The WebBrowser provides a space in which to display a web page within
+	 * a FlexJS application. Use the url property to change the location of
+	 * the web page being displayed.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	COMPILE::AS3
+	public class WebBrowser extends UIBase implements IHandlesOriginalEvent
+	{
+		/**
+		 * Constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function WebBrowser()
+		{
+			super();
+		}
+
+		/**
+		 * The location of the web page to display. Security restrictions may
+		 * apply.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get url():String
+		{
+			return (model as WebBrowserModel).url;
+		}
+
+		public function set url(value:String):void
+		{
+			(model as WebBrowserModel).url = value;
+		}
+	}
+
+	COMPILE::JS
+	public class WebBrowser extends UIBase
+	{
+		/**
+		 * Constructor
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function WebBrowser()
+		{
+			super();
+		}
+
+		/**
+		 * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+		 */
+		override protected function createElement():WrappedHTMLElement
+		{
+			element = document.createElement('iframe') as WrappedHTMLElement;
+			element.flexjs_wrapper = this;
+
+			var iframe:HTMLIFrameElement = element as HTMLIFrameElement;
+			iframe.frameBorder = "0";
+			iframe.src = "JavaScript:''";
+			iframe.sandbox = "allow-top-navigation allow-forms allow-scripts";
+
+			positioner = element;
+
+			return element;
+		}
+		
+		/**
+		 * The location of the web page to display. Security restrictions may
+		 * apply.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get url():String
+		{
+			return (model as WebBrowserModel).url;
+		}
+
+		public function set url(value:String):void
+		{
+			(model as WebBrowserModel).url = value;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
new file mode 100644
index 0000000..cb14971
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/WebBrowserView.as
@@ -0,0 +1,198 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.html.beads
+{
+	COMPILE::AS3 {
+		import flash.events.Event;
+		import flash.html.HTMLLoader;
+		import flash.net.URLRequest;
+	}
+
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.models.WebBrowserModel;
+
+	/**
+	 *  The WebBrowserView creates an instance of HTMLLoader to load
+	 *  web pages into AIR application.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	COMPILE::AS3
+	public class WebBrowserView implements IBeadView
+	{
+		/**
+		 *  constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function WebBrowserView()
+		{
+			loader = new HTMLLoader();
+			loader.placeLoadStringContentInApplicationSandbox = false;
+
+			loader.addEventListener(flash.events.LocationChangeEvent.LOCATION_CHANGE, handleLocationChange);
+		}
+
+		private var _strand:IStrand;
+
+		private var loader:HTMLLoader;
+
+		/**
+		 * @private
+		 */
+		public function get host():IUIBase
+		{
+			return _strand as IUIBase;
+		}
+
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+
+			(host as UIBase).addEventListener("widthChanged", handleSizeChange);
+			(host as UIBase).addEventListener("heightChanged", handleSizeChange);
+
+			var model:IEventDispatcher = (host as UIBase).model as IEventDispatcher;
+			model.addEventListener("urlChanged", loadPage);
+
+			loader.x = 0;
+			loader.y = 0;
+			loader.width = host.width;
+			loader.height = host.height;
+			(host as UIBase).addElement(loader);
+		}
+
+		/**
+		 * @private
+		 */
+		private function loadPage(event:org.apache.flex.events.Event):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+			loader.load(new URLRequest(model.url));
+		}
+
+		/**
+		 * @private
+		 */
+		private function handleSizeChange(event:org.apache.flex.events.Event):void
+		{
+			loader.width = host.width;
+			loader.height = host.height;
+		}
+
+		/**
+		 * @private
+		 */
+		private function handleLocationChange(event:flash.events.LocationChangeEvent):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+			model.setURL(loader.location);
+			host.dispatchEvent(new org.apache.flex.events.Event("locationChanged"));
+		}
+	}
+
+	COMPILE::JS
+	public class WebBrowserView implements IBeadView
+	{
+		/**
+		 * Constructor
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function WebBrowserView()
+		{
+
+		}
+
+		private var _strand:IStrand;
+
+		/**
+		 * @private
+		 */
+		public function get host():IUIBase
+		{
+			return _strand as IUIBase;
+		}
+
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+
+			var model:IEventDispatcher = (host as UIBase).model as IEventDispatcher;
+			model.addEventListener("urlChanged", loadPage);
+
+			var iframe:HTMLIFrameElement = (host as UIBase).element as HTMLIFrameElement;
+			iframe.addEventListener("pageshow", handlePageShow, false);
+		}
+
+		/**
+		 * @private
+		 */
+		private function loadPage(event:Event):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+
+			var iframe:HTMLIFrameElement = (host as UIBase).element as HTMLIFrameElement;
+			iframe.src = model.url;
+		}
+
+		/**
+		 * @private
+		 */
+		private function handlePageShow(event:Event):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+			var iframe:HTMLIFrameElement = (host as UIBase).element as HTMLIFrameElement;
+
+			model.setURL(iframe.src);
+			host.dispatchEvent(new org.apache.flex.events.Event("locationChanged"));
+		}
+	}
+}
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/WebBrowserModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/WebBrowserModel.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/WebBrowserModel.as
new file mode 100644
index 0000000..fbd823a
--- /dev/null
+++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/models/WebBrowserModel.as
@@ -0,0 +1,100 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.html.beads.models
+{
+	import org.apache.flex.core.IBeadModel;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.EventDispatcher;
+
+	/**
+	 *  The WebBrowserModel class bead defines the data associated with an org.apache.flex.html.WebBrowser
+	 *  component.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class WebBrowserModel extends EventDispatcher implements IBeadModel
+	{
+		/**
+		 *  constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function WebBrowserModel()
+		{
+			super();
+		}
+
+		private var _strand:IStrand;
+
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+		}
+
+		private var _url:String;
+
+		/**
+		 *  The URL to load into the WebBrowser.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get url():String
+		{
+			return _url;
+		}
+		public function set url(value:String):void
+		{
+			if (value != _url) {
+				_url = value;
+				dispatchEvent( new Event("urlChanged") );
+			}
+		}
+
+		/**
+		 * Sets the URL value without dispatching an event.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function setURL(value:String):void
+		{
+		    _url = value;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
index 23dcccc..3b72af6 100644
--- a/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/HTML/src/main/resources/basic-manifest.xml
@@ -101,5 +101,7 @@
     <component id="MXMLBeadViewBase" class="org.apache.flex.html.MXMLBeadViewBase"/>
 
     <component id="Border" class="org.apache.flex.html.supportClasses.Border"/>
+    
+    <component id="WebBrowser" class="org.apache.flex.html.WebBrowser" />
 
 </componentPackage>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/HTML/src/main/resources/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/HTML/src/main/resources/defaults.css b/frameworks/projects/HTML/src/main/resources/defaults.css
index bb8ca6e..13d7418 100644
--- a/frameworks/projects/HTML/src/main/resources/defaults.css
+++ b/frameworks/projects/HTML/src/main/resources/defaults.css
@@ -336,6 +336,12 @@ ViewBase
 	IViewportModel: ClassReference("org.apache.flex.html.beads.models.ViewportModel");
 }
 
+WebBrowser
+{
+	IBeadView: ClassReference("org.apache.flex.html.beads.WebBrowserView");
+	IBeadModel: ClassReference("org.apache.flex.html.beads.models.WebBrowserModel");
+}
+
 
 /* Global Style Declaration */
 global

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/Mobile/src/main/flex/MobileClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/MobileClasses.as b/frameworks/projects/Mobile/src/main/flex/MobileClasses.as
index fc933aa..8643954 100644
--- a/frameworks/projects/Mobile/src/main/flex/MobileClasses.as
+++ b/frameworks/projects/Mobile/src/main/flex/MobileClasses.as
@@ -37,6 +37,10 @@ internal class MobileClasses
 	import org.apache.flex.mobile.chrome.TabBar; TabBar;
 	import org.apache.flex.mobile.chrome.ToolBar; ToolBar;
 	import org.apache.flex.mobile.models.ViewManagerModel; ViewManagerModel;
+	
+	COMPILE::AS3 {
+		import org.apache.flex.mobile.beads.MobileWebBrowserView; MobileWebBrowserView;
+	}
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/18deeaec/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/MobileWebBrowserView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/MobileWebBrowserView.as b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/MobileWebBrowserView.as
new file mode 100644
index 0000000..686d94f
--- /dev/null
+++ b/frameworks/projects/Mobile/src/main/flex/org/apache/flex/mobile/beads/MobileWebBrowserView.as
@@ -0,0 +1,129 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.mobile.beads
+{
+	import flash.events.Event;
+	import flash.media.StageWebView;
+	import flash.geom.Rectangle;
+	import flash.geom.Point;
+
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.models.WebBrowserModel;
+
+	/**
+	 *  The MobileWebBrowserView creates an instance of StageWebView to load
+	 *  web pages into a mobile application. This class is available only
+	 *  for AS3 compiled mode. Note that StageWebView is attached directly to
+	 *  the stage and may obscure other components.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class MobileWebBrowserView implements IBeadView
+	{
+		/**
+		 *  constructor.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function MobileWebBrowserView()
+		{
+			stageWebView = new StageWebView();
+
+			stageWebView.addEventListener(flash.events.Event.COMPLETE, handleLocationChange);
+		}
+
+		private var _strand:IStrand;
+
+		private var stageWebView:StageWebView;
+
+		/**
+		 * @private
+		 */
+		public function get host():IUIBase
+		{
+			return _strand as IUIBase;
+		}
+
+		/**
+		 *  @copy org.apache.flex.core.IBead#strand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+
+			(host as UIBase).addEventListener("widthChanged", handleSizeChange);
+			(host as UIBase).addEventListener("heightChanged", handleSizeChange);
+
+			var model:IEventDispatcher = (host as UIBase).model as IEventDispatcher;
+			model.addEventListener("urlChanged", loadPage);
+
+			stageWebView.stage = (host as UIBase).stage;
+			
+			var hostOrigin:Point = new Point(0,0);
+			var hostPosition:Point = (host as UIBase).localToGlobal(hostOrigin);
+			stageWebView.viewPort = new Rectangle( hostPosition.x, hostPosition.y, host.width, host.height );
+		}
+
+		/**
+		 * @private
+		 */
+		private function loadPage(event:org.apache.flex.events.Event):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+			stageWebView.loadURL(model.url);
+		}
+
+		/**
+		 * @private
+		 */
+		private function handleSizeChange(event:org.apache.flex.events.Event):void
+		{
+			var hostOrigin:Point = new Point(0,0);
+			var hostPosition:Point = (host as UIBase).localToGlobal(hostOrigin);
+			stageWebView.viewPort = new Rectangle( hostPosition.x, hostPosition.y, host.width, host.height );
+		}
+
+		/**
+		 * @private
+		 */
+		private function handleLocationChange(event:flash.events.Event):void
+		{
+			var model:WebBrowserModel = (host as UIBase).model as WebBrowserModel;
+			model.setURL(stageWebView.location);
+			host.dispatchEvent(new org.apache.flex.events.Event("locationChanged"));
+		}
+	}
+}
+