Fix the Chrome plugin to work on a Mac. Review at http://gwt-code-reviews.appspot.com/1844803 Review by: cromwellian@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@11310 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/plugins/npapi/Makefile b/plugins/npapi/Makefile index 43ffd22..fa629a4 100644 --- a/plugins/npapi/Makefile +++ b/plugins/npapi/Makefile
@@ -12,12 +12,17 @@ # License for the specific language governing permissions and limitations under # the License. +ifeq ($(shell uname),Darwin) +# We seem to be using 32-bit plugins on the Mac, so compile this way even if host is 64-bit. +ARCH=x86 +endif + include ../config.mk ifeq ($(OS),mac) RUN_PATH_FLAG = -executable_path DLL_SUFFIX = .dylib -DLLFLAGS = -bundle $(ARCHCFLAGS) -mmacosx-version-min=10.5 +DLLFLAGS = -bundle $(ARCHCFLAGS) -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk CFLAGS += -DXP_MACOSX $(ARCHCFLAGS) CXXFLAGS += -DXP_MACOSX $(ARCHCFLAGS) # Mac puts multiple architectures into the same files @@ -120,7 +125,7 @@ $(CXX) $(CXXFLAGS) -c -o $@ -I. -I../common $< common $(COMMON): - (cd ../common && $(MAKE)) + (cd ../common && ARCH=$(ARCH) $(MAKE)) clean: rm -rf build
diff --git a/plugins/npapi/main.cpp b/plugins/npapi/main.cpp index e292b87..0fb5b61 100644 --- a/plugins/npapi/main.cpp +++ b/plugins/npapi/main.cpp
@@ -184,6 +184,31 @@ // } instance->pdata = obj; +#ifdef __APPLE_CC__ + // On the Mac, we need to negotiate CoreGraphics and Cocoa even though + // we don't use them. + // See: http://code.google.com/p/chromium/issues/detail?id=134761 + + // select the right drawing model if necessary + NPBool supportsCoreGraphics = false; + if (browser->getvalue(instance, NPNVsupportsCoreGraphicsBool, + &supportsCoreGraphics) == NPERR_NO_ERROR && supportsCoreGraphics) { + + browser->setvalue(instance, NPPVpluginDrawingModel, + (void*)NPDrawingModelCoreGraphics); + } + + // select the Cocoa event model + NPBool supportsCocoaEvents = false; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, + &supportsCocoaEvents) == NPERR_NO_ERROR && supportsCocoaEvents) { + + browser->setvalue(instance, NPPVpluginEventModel, + (void*)NPEventModelCocoa); + } + +#endif + // Make this a windowless plugin. return NPN_SetValue(instance, NPPVpluginWindowBool, NULL); }
diff --git a/plugins/npapi/npapi/npapi.h b/plugins/npapi/npapi/npapi.h index dc37367..cca69c3 100644 --- a/plugins/npapi/npapi/npapi.h +++ b/plugins/npapi/npapi/npapi.h
@@ -258,6 +258,16 @@ } NPDrawingModel; #endif +// copied from newer npapi.h - skybrian +#ifdef XP_MACOSX +typedef enum { +#ifndef NP_NO_CARBON + NPEventModelCarbon = 0, +#endif + NPEventModelCocoa = 1 +} NPEventModel; +#endif + typedef unsigned char NPBool; typedef int16 NPError; typedef int16 NPReason; @@ -450,6 +460,15 @@ /* Used for negotiating drawing models */ , NPPVpluginDrawingModel = 1000 #endif + + // copied from newer npapi.h - skybrian +#if defined(XP_MACOSX) + /* Used for negotiating event models */ + , NPPVpluginEventModel = 1001 + /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */ + , NPPVpluginCoreAnimationLayer = 1003 +#endif + } NPPVariable; /* @@ -486,6 +505,13 @@ #endif , NPNVsupportsCoreGraphicsBool = 2001 #endif + // Copied from newer npapi - skybrian +#if defined(XP_MACOSX) +#ifndef NP_NO_CARBON + , NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */ +#endif + , NPNVsupportsCocoaBool = 3001 /* TRUE if the browser supports the Cocoa event model */ +#endif } NPNVariable; /*
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib index b089cef..0ce4079 100755 --- a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib +++ b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json b/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json index 53a6a1a..ec25f33 100644 --- a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json +++ b/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
@@ -1,6 +1,6 @@ { "name": "GWT Developer Plugin", - "version": "1.0.11303", + "version": "1.0.11305", "manifest_version": 2, "description": "A plugin to enable debugging with GWT's Development Mode",