M build-tests.xml

- make NavigationTest not run

M build.xml

- Move Win32BrowserControlCanvas up to parent package

M classes_spec/org/mozilla/webclient/BrowserControlCanvas.java

- You can't resize until you're initialized

- pass visibility through to native layer

M classes_spec/org/mozilla/webclient/impl/BrowserControlImpl.java

- Use WrapperFactory to create the BrowserControlCanvas impl.

A classes_spec/org/mozilla/webclient/impl/wrapper_native/Win32BrowserControlCanvas.java

- moved up from child package

M classes_spec/org/mozilla/webclient/impl/wrapper_native/WindowControlImpl.java

- use the new thread model for nativeSetBounds(), nativeRealize(),
  nativeSetVisible().

M classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java

- make this create the BrowserControlCanvas instance.

- honor the new package name for Win32BrowserControlCanvas.

R classes_spec/org/mozilla/webclient/impl/wrapper_native/win32/Win32BrowserControlCanvas.java

- moved up one level.

M src_moz/EmbedWindow.cpp
M src_moz/EmbedWindow.h

- Take size parameters to CreateWindow_

M src_moz/Makefile.in

- add WindowControlImpl.cpp

M src_moz/NativeBrowserControl.cpp
M src_moz/NativeBrowserControl.h

- add size parameters to Realize().

M src_moz/WindowControlImpl.cpp

- reactivate nativeRealize(), nativeSetVisible(), nativesetBounds(),

M src_moz/win32/Win32BrowserControlCanvas.cpp

- new package name

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- we have to create a Canvas to load a URL.  Mozilla limitation.

M test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImplTest.java

- remove unneeded test metdod


git-svn-id: svn://10.0.0.236/trunk@155219 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
edburns%acm.org
2004-04-20 16:17:43 +00:00
parent f441c02895
commit c1919441ed
16 changed files with 262 additions and 139 deletions

View File

@@ -52,7 +52,7 @@ import java.awt.*;
* See concrete subclasses for scope info.
* @version $Id: BrowserControlCanvas.java,v 1.6 2003-09-06 06:26:45 edburns%acm.org Exp $
* @version $Id: BrowserControlCanvas.java,v 1.7 2004-04-20 16:17:41 edburns%acm.org Exp $
* @see org.mozilla.webclient.win32.Win32BrowserControlCanvas
@@ -227,6 +227,9 @@ protected Rectangle getBoundsRelativeToWindow ()
public void setBounds(int x, int y, int w, int h)
{
if (!initializeOK) {
throw new IllegalStateException("Can't resize canvas before adding it to parent");
}
super.setBounds(x, y, w, h);
Rectangle boundsRect = new Rectangle(0, 0, w - 1, h - 1);
if (webShell != null) {
@@ -255,6 +258,20 @@ public void setBounds(Rectangle rect)
super.setBounds(rect);
}
public void setVisible(boolean b) {
try {
WindowControl wc = (WindowControl)
webShell.queryInterface(BrowserControl.WINDOW_CONTROL_NAME);
wc.setVisible(b);
}
catch(Exception ex) {
System.out.println("Can't setVisible(" + b + ") " +
ex.getMessage());
}
super.setVisible(b);
}
} // class BrowserControlCanvas

View File

@@ -186,7 +186,12 @@ public Object queryInterface(String interfaceName) throws ClassNotFoundException
return history;
}
if (BROWSER_CONTROL_CANVAS_NAME.equals(interfaceName)) {
Assert.assert_it(null != myCanvas);
if (null == myCanvas) {
myCanvas =
(BrowserControlCanvas)
wrapperFactory.newImpl(BROWSER_CONTROL_CANVAS_NAME,
this);
}
return myCanvas;
}
if (CURRENT_PAGE_NAME.equals(interfaceName)) {

View File

@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
@@ -20,7 +19,7 @@
* Contributor(s):
*/
package org.mozilla.webclient.impl.wrapper_native.win32;
package org.mozilla.webclient.impl.wrapper_native;
// Win32BrowserControlCanvas.java
@@ -28,6 +27,9 @@ import org.mozilla.util.Assert;
import org.mozilla.util.Log;
import org.mozilla.util.ParameterCheck;
import org.mozilla.webclient.impl.wrapper_native.WCRunnable;
import org.mozilla.webclient.impl.wrapper_native.NativeEventThread;
/**
* Win32RaptorCanvas provides a concrete realization
@@ -37,7 +39,7 @@ import org.mozilla.util.ParameterCheck;
* There is one instance of the BrowserControlCanvas per top level awt Frame.
* @version $Id: Win32BrowserControlCanvas.java,v 1.1 2003-09-28 06:29:10 edburns%acm.org Exp $
* @version $Id: Win32BrowserControlCanvas.java,v 1.1 2004-04-20 16:17:41 edburns%acm.org Exp $
*
* @see org.mozilla.webclient.BrowserControlCanvasFactory
*
@@ -64,7 +66,15 @@ public class Win32BrowserControlCanvas extends BrowserControlCanvas {
*
* @returns The native window handle.
*/
protected int getWindow() {
return this.getHandleToPeer();
}
protected int getWindow() {
Integer result = (Integer)
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable(){
public Object run() {
Integer result =
new Integer(Win32BrowserControlCanvas.this.getHandleToPeer());
return result;
}
});
return result.intValue();
}
}

View File

@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
/*
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
@@ -79,23 +78,41 @@ public WindowControlImpl(WrapperFactory yourFactory,
// Methods from WindowControl
//
public void setBounds(Rectangle newBounds)
public void setBounds(Rectangle rect)
{
ParameterCheck.nonNull(newBounds);
ParameterCheck.nonNull(rect);
getWrapperFactory().verifyInitialized();
Assert.assert_it(-1 != getNativeBrowserControl());
synchronized(getBrowserControl()) {
nativeSetBounds(getNativeBrowserControl(), newBounds.x, newBounds.y,
newBounds.width, newBounds.height);
}
final Rectangle newBounds = rect;
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
public Object run() {
nativeSetBounds(getNativeBrowserControl(),
newBounds.x, newBounds.y,
newBounds.width, newBounds.height);
return null;
}
});
}
public void createWindow(int nativeWindow, Rectangle bounds)
public void createWindow(int nativeWindow, Rectangle rect)
{
ParameterCheck.greaterThan(nativeWindow, 0);
ParameterCheck.nonNull(bounds);
ParameterCheck.nonNull(rect);
getWrapperFactory().verifyInitialized();
final int nativeWin = nativeWindow;
final int nativeBc = getNativeBrowserControl();
final BrowserControl bc = getBrowserControl();
final Rectangle bounds = rect;
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
public Object run() {
nativeRealize(nativeWin, nativeBc, bounds.x,
bounds.y, bounds.width,
bounds.height, bc);
return null;
}
});
}
public int getNativeWebShell()
@@ -134,10 +151,13 @@ public void repaint(boolean forceRepaint)
public void setVisible(boolean newState)
{
getWrapperFactory().verifyInitialized();
synchronized(getBrowserControl()) {
nativeSetVisible(getNativeBrowserControl(), newState);
}
final boolean finalBool = newState;
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
public Object run() {
nativeSetVisible(getNativeBrowserControl(), finalBool);
return null;
}
});
}
public void setFocus()
@@ -152,6 +172,11 @@ public void setFocus()
// Native methods
//
public native void nativeRealize(int nativeWindow,
int nativeBrowserControl,
int x, int y, int width, int height,
BrowserControl myBrowserControlImpl);
public native void nativeSetBounds(int webShellPtr, int x, int y,
int w, int h);
@@ -178,7 +203,7 @@ public static void main(String [] args)
Log.setApplicationName("WindowControlImpl");
Log.setApplicationVersion("0.0");
Log.setApplicationVersionDate("$Id: WindowControlImpl.java,v 1.3 2004-04-10 21:50:38 edburns%acm.org Exp $");
Log.setApplicationVersionDate("$Id: WindowControlImpl.java,v 1.4 2004-04-20 16:17:41 edburns%acm.org Exp $");
try {
org.mozilla.webclient.BrowserControlFactory.setAppData(args[0]);

View File

@@ -26,6 +26,7 @@ import org.mozilla.util.Log;
import org.mozilla.util.ParameterCheck;
import org.mozilla.webclient.BrowserControl;
import org.mozilla.webclient.BrowserControlCanvas;
import org.mozilla.webclient.impl.BrowserControlImpl;
import org.mozilla.webclient.Bookmarks;
import org.mozilla.webclient.Preferences;
@@ -201,43 +202,56 @@ public class WrapperFactoryImpl extends Object implements WrapperFactory {
public Object newImpl(String interfaceName,
BrowserControl browserControl) throws ClassNotFoundException {
Object result = null;
synchronized(this) {
if (!nativeDoesImplement(interfaceName)) {
throw new ClassNotFoundException("Can't instantiate " +
interfaceName +
": not implemented.");
if (BrowserControl.BROWSER_CONTROL_CANVAS_NAME == interfaceName) {
Class bcClass = Class.forName(getPlatformCanvasClassName());
BrowserControlCanvas canvas = null;
try {
canvas = (BrowserControlCanvas) bcClass.newInstance();
}
if (BrowserControl.WINDOW_CONTROL_NAME == interfaceName) {
result = new WindowControlImpl(this, browserControl);
catch (IllegalAccessException e) {
throw new ClassNotFoundException(e.getMessage());
}
if (BrowserControl.NAVIGATION_NAME == interfaceName) {
result = new NavigationImpl(this, browserControl);
}
if (BrowserControl.HISTORY_NAME == interfaceName) {
result = new HistoryImpl(this, browserControl);
}
if (BrowserControl.CURRENT_PAGE_NAME == interfaceName) {
result = new CurrentPageImpl(this, browserControl);
}
if (BrowserControl.EVENT_REGISTRATION_NAME == interfaceName) {
result = new EventRegistrationImpl(this, browserControl);
}
if (BrowserControl.BOOKMARKS_NAME == interfaceName) {
Assert.assert_it(null != bookmarks);
result = bookmarks;
}
if (BrowserControl.PREFERENCES_NAME == interfaceName) {
Assert.assert_it(null != prefs);
result = prefs;
}
if (BrowserControl.PROFILE_MANAGER_NAME == interfaceName) {
Assert.assert_it(null != profileManager);
result = profileManager;
catch (InstantiationException e) {
throw new ClassNotFoundException(e.getMessage());
}
canvas.initialize(browserControl);
return canvas;
}
Object result = null;
if (!nativeDoesImplement(interfaceName)) {
throw new ClassNotFoundException("Can't instantiate " +
interfaceName +
": not implemented.");
}
if (BrowserControl.WINDOW_CONTROL_NAME == interfaceName) {
result = new WindowControlImpl(this, browserControl);
}
if (BrowserControl.NAVIGATION_NAME == interfaceName) {
result = new NavigationImpl(this, browserControl);
}
if (BrowserControl.HISTORY_NAME == interfaceName) {
result = new HistoryImpl(this, browserControl);
}
if (BrowserControl.CURRENT_PAGE_NAME == interfaceName) {
result = new CurrentPageImpl(this, browserControl);
}
if (BrowserControl.EVENT_REGISTRATION_NAME == interfaceName) {
result = new EventRegistrationImpl(this, browserControl);
}
if (BrowserControl.BOOKMARKS_NAME == interfaceName) {
Assert.assert_it(null != bookmarks);
result = bookmarks;
}
if (BrowserControl.PREFERENCES_NAME == interfaceName) {
Assert.assert_it(null != prefs);
result = prefs;
}
if (BrowserControl.PROFILE_MANAGER_NAME == interfaceName) {
Assert.assert_it(null != profileManager);
result = profileManager;
}
return result;
}
@@ -379,7 +393,7 @@ protected String getPlatformCanvasClassName()
if (null != osName) {
if (-1 != osName.indexOf("indows")) {
platformCanvasClassName = "org.mozilla.webclient.impl.wrapper_native.win32.Win32BrowserControlCanvas";
platformCanvasClassName = "org.mozilla.webclient.impl.wrapper_native.Win32BrowserControlCanvas";
}
else {
platformCanvasClassName = "org.mozilla.webclient.impl.wrapper_native.gtk.GtkBrowserControlCanvas";