Author: doll
Date: Thu Jul 17 12:37:30 2008
New Revision: 677699
URL: http://svn.apache.org/viewvc?rev=677699&view=rev
Log:
SHINDIG-436
Patch from Mike Samuel. The caja js is now pulled directly from the caja maven
repo. The java integration has been updated and the caja integration now works.
If you uncomment the caja dependency in opensocial-current/feature.xml and
toggle the "use caja" box in the sample container you should be able to see
this work on the java side.
Removed:
incubator/shindig/trunk/features/caja/caja.js
incubator/shindig/trunk/features/caja/domita.js
incubator/shindig/trunk/features/caja/html-sanitizer.js
incubator/shindig/trunk/features/caja/html4-defs.js
incubator/shindig/trunk/features/caja/log-to-console.js
incubator/shindig/trunk/features/caja/permissive.js
incubator/shindig/trunk/features/caja/unicode.js
Modified:
incubator/shindig/trunk/features/caja/feature.xml
incubator/shindig/trunk/features/opensocial-current/feature.xml
incubator/shindig/trunk/features/opensocial-reference/container.js
incubator/shindig/trunk/features/pom.xml
incubator/shindig/trunk/java/gadgets/pom.xml
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html
incubator/shindig/trunk/pom.xml
Modified: incubator/shindig/trunk/features/caja/feature.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/features/caja/feature.xml?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/features/caja/feature.xml (original)
+++ incubator/shindig/trunk/features/caja/feature.xml Thu Jul 17 12:37:30 2008
@@ -16,18 +16,11 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
- TODO(doll): The caja.js file referenced here should come from maven
- or something. We should not have our own copy of it.
+The javascript referenced here should be found in the caja jar.
-->
<feature>
<name>caja</name>
<gadget>
- <script src="caja.js"></script>
- <script src="html4-defs.js"></script>
- <script src="html-sanitizer.js"></script>
- <script src="unicode.js"></script>
- <script src="domita.js"></script>
- <script src="log-to-console.js"></script>
- <script src="permissive.js"></script>
+ <script src="res:///com/google/caja/plugin/domita-minified.js"></script>
</gadget>
</feature>
Modified: incubator/shindig/trunk/features/opensocial-current/feature.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/features/opensocial-current/feature.xml?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/features/opensocial-current/feature.xml (original)
+++ incubator/shindig/trunk/features/opensocial-current/feature.xml Thu Jul 17
12:37:30 2008
@@ -20,6 +20,9 @@
<feature>
<name>opensocial-0.8</name>
<dependency>opensocial-reference</dependency>
+ <!-- <dependency>caja</dependency> -->
+ <!-- Must include the "caja" feature to display samplecontainer -->
+ <!-- gadgets when "use caja" is checked -->
<gadget>
<script src="jsonperson.js"></script>
<script src="jsonactivity.js"></script>
@@ -57,7 +60,7 @@
opensocial.Container.setContainer(new ShindigContainer());
}
- if (configParams.enableCaja) {
+ if (window['caja']) {
opensocial.Container.get().enableCaja();
}
});
Modified: incubator/shindig/trunk/features/opensocial-reference/container.js
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/features/opensocial-reference/container.js?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/features/opensocial-reference/container.js
(original)
+++ incubator/shindig/trunk/features/opensocial-reference/container.js Thu Jul
17 12:37:30 2008
@@ -514,6 +514,9 @@
// By default, only allow references to anchors.
if (/^#/.test(uri)) {
return '#' + encodeURIComponent(decodeURIComponent(uri.substring(1)));
+ // and files on the same host
+ } else if (/^\/(?:[^\/][^?#]*)?$/) {
+ return encodeURI(decodeURI(uri));
}
// This callback can be replaced with one that passes the URL through
// a proxy that checks the mimetype.
@@ -535,77 +538,548 @@
caja = window["caja"];
attachDocumentStub = window["attachDocumentStub"];
- var outers = caja.copy(___.sharedOuters);
+ var imports = caja.copy(___.sharedImports);
+ ___.getNewModuleHandler().setImports(imports);
- // TODO(doll): We need to add caja allows for the gadgets namespace so that
- // this works properly. It does not belong in gadgets.
- var igOnload = window["_IG_RegisterOnloadHandler"];
- if (igOnload) {
- outers._IG_RegisterOnloadHandler = ___.simpleFunc(igOnload);
+ attachDocumentStub('-g___', uriCallback, imports);
+ var gadgetRoot = document.createElement('div');
+ gadgetRoot.className = 'g___';
+ imports.htmlEmitter___ = new HtmlEmitter(gadgetRoot);
+ document.body.appendChild(gadgetRoot);
+
+ // Add the opensocial APIs and mark them callable and readable.
+ imports.gadgets = gadgets;
+ imports.opensocial = opensocial;
+ // The below described the opensocial reference APIs.
+ // A prefix of "c_" specifies a class, "m_" a method, "f_" a field,
+ // and "s_" a static member.
+ // Derived from http://code.google.com/apis/opensocial/docs/0.8/reference/ .
+ var opensocialSchema = {
+ c_gadgets: {
+ c_MiniMessage: {
+ m_createDismissibleMessage: 0,
+ m_createStaticMessage: 0,
+ m_createTimerMessage: 0,
+ m_dismissMessage: 0
+ },
+ c_Prefs: {
+ m_getArray: 0,
+ m_getBool: 0,
+ m_getCountry: 0,
+ m_getFloat: 0,
+ m_getInt: 0,
+ m_getLang: 0,
+ m_getMsg: 0,
+ m_getString: 0,
+ m_set: 0,
+ m_setArray: 0
+ },
+ c_Tab: {
+ m_getCallback: 0,
+ m_getContentContainer: 0,
+ m_getIndex: 0,
+ m_getName: 0,
+ m_getNameContainer: 0
+ },
+ c_TabSet: {
+ m_addTab: 0,
+ m_alignTabs: 0,
+ m_displayTabs: 0,
+ m_getHeaderContainer: 0,
+ m_getSelectedTab: 0,
+ m_getTabs: 0,
+ m_removeTab: 0,
+ m_setSelectedTab: 0,
+ m_swapTabs: 0
+ },
+ c_flash: {
+ s_embedCachedFlash: 0,
+ s_embedFlash: 0,
+ s_getMajorVersion: 0
+ },
+ c_io: {
+ c_AuthorizationType: {
+ s_NONE: 0,
+ s_OAUTH: 0,
+ s_SIGNED: 0
+ },
+ c_ContentType: {
+ s_DOM: 0,
+ s_FEED: 0,
+ s_JSON: 0,
+ s_TEXT: 0
+ },
+ c_MethodType: {
+ s_DELETE: 0,
+ s_GET: 0,
+ s_HEAD: 0,
+ s_POST: 0,
+ s_PUT: 0
+ },
+ c_ProxyUrlRequestParameters: {
+ s_REFRESH_INTERVAL: 0
+ },
+ c_RequestParameters: {
+ s_AUTHORIZATION: 0,
+ s_CONTENT_TYPE: 0,
+ s_GET_SUMMARIES: 0,
+ s_HEADERS: 0,
+ s_METHOD: 0,
+ s_NUM_ENTRIES: 0,
+ s_POST_DATA: 0
+ },
+ s_encodeValues: 0,
+ s_getProxyUrl: 0,
+ s_makeRequest: 0
+ },
+ c_json: {
+ s_parse: 0,
+ s_stringify: 0
+ },
+ c_pubsub: {
+ s_publish: 0,
+ s_subscribe: 0,
+ s_unsubscribe: 0
+ },
+ c_rpc: {
+ s_call: 0,
+ s_register: 0,
+ s_registerDefault: 0,
+ s_unregister: 0,
+ s_unregisterDefault: 0
+ },
+ c_skins: {
+ c_Property: {
+ s_ANCHOR_COLOR: 0,
+ s_BG_COLOR: 0,
+ s_BG_IMAGE: 0,
+ s_FONT_COLOR: 0
+ },
+ s_getProperty: 0
+ },
+ c_util: {
+ s_escapeString: 0,
+ s_getFeatureParameters: 0,
+ s_hasFeature: 0,
+ s_registerOnLoadHandler: 0,
+ s_unescapeString: 0
+ },
+ c_views: {
+ c_View: {
+ m_bind: 0,
+ m_getUrlTemplate: 0,
+ m_isOnlyVisibleGadget: 0
+ },
+ c_ViewType: {
+ s_CANVAS: 0,
+ s_HOME: 0,
+ s_PREVIEW: 0,
+ s_PROFILE: 0
+ },
+ s_bind: 0,
+ s_getCurrentView: 0,
+ s_getParams: 0,
+ s_requestNavigateTo: 0
+ },
+ c_window: {
+ s_adjustHeight: 0,
+ s_getViewportDimensions: 0,
+ s_setTitle: 0
+ }
+ },
+ c_opensocial: {
+ c_Activity: {
+ c_Field: {
+ s_APP_ID: 0,
+ s_BODY: 0,
+ s_BODY_ID: 0,
+ s_EXTERNAL_ID: 0,
+ s_ID: 0,
+ s_MEDIA_ITEMS: 0,
+ s_POSTED_TIME: 0,
+ s_PRIORITY: 0,
+ s_STREAM_FAVICON_URL: 0,
+ s_STREAM_SOURCE_URL: 0,
+ s_STREAM_TITLE: 0,
+ s_STREAM_URL: 0,
+ s_TEMPLATE_PARAMS: 0,
+ s_TITLE: 0,
+ s_TITLE_ID: 0,
+ s_URL: 0,
+ s_USER_ID: 0
+ },
+ m_getField: 0,
+ m_getId: 0,
+ m_setField: 0
+ },
+ c_Address: {
+ c_Field: {
+ s_COUNTRY: 0,
+ s_EXTENDED_ADDRESS: 0,
+ s_LATITUDE: 0,
+ s_LOCALITY: 0,
+ s_LONGITUDE: 0,
+ s_POSTAL_CODE: 0,
+ s_PO_BOX: 0,
+ s_REGION: 0,
+ s_STREET_ADDRESS: 0,
+ s_TYPE: 0,
+ s_UNSTRUCTURED_ADDRESS: 0
+ },
+ m_getField: 0
+ },
+ c_BodyType: {
+ c_Field: {
+ s_BUILD: 0,
+ s_EYE_COLOR: 0,
+ s_HAIR_COLOR: 0,
+ s_HEIGHT: 0,
+ s_WEIGHT: 0
+ },
+ m_getField: 0
+ },
+ c_Collection: {
+ m_asArray: 0,
+ m_each: 0,
+ m_getById: 0,
+ m_getOffset: 0,
+ m_getTotalSize: 0,
+ m_size: 0
+ },
+ c_CreateActivityPriority: {
+ s_HIGH: 0,
+ s_LOW: 0
+ },
+ c_DataRequest: {
+ c_DataRequestFields: {
+ s_ESCAPE_TYPE: 0
+ },
+ c_FilterType: {
+ s_ALL: 0,
+ s_HAS_APP: 0,
+ s_TOP_FRIENDS: 0
+ },
+ c_PeopleRequestFields: {
+ s_FILTER: 0,
+ s_FILTER_OPTIONS: 0,
+ s_FIRST: 0,
+ s_MAX: 0,
+ s_PROFILE_DETAILS: 0,
+ s_SORT_ORDER: 0
+ },
+ c_SortOrder: {
+ s_NAME: 0,
+ s_TOP_FRIENDS: 0
+ },
+ m_add: 0,
+ m_newFetchActivitiesRequest: 0,
+ m_newFetchPeopleRequest: 0,
+ m_newFetchPersonAppDataRequest: 0,
+ m_newFetchPersonRequest: 0,
+ m_newRemovePersonAppDataRequest: 0,
+ m_newUpdatePersonAppDataRequest: 0,
+ m_send: 0
+ },
+ c_DataResponse: {
+ m_get: 0,
+ m_getErrorMessage: 0,
+ m_hadError: 0
+ },
+ c_Email: {
+ c_Field: {
+ s_ADDRESS: 0,
+ s_TYPE: 0
+ },
+ m_getField: 0
+ },
+ c_Enum: {
+ c_Drinker: {
+ s_HEAVILY: 0,
+ s_NO: 0,
+ s_OCCASIONALLY: 0,
+ s_QUIT: 0,
+ s_QUITTING: 0,
+ s_REGULARLY: 0,
+ s_SOCIALLY: 0,
+ s_YES: 0
+ },
+ c_Gender: {
+ s_FEMALE: 0,
+ s_MALE: 0
+ },
+ c_LookingFor: {
+ s_ACTIVITY_PARTNERS: 0,
+ s_DATING: 0,
+ s_FRIENDS: 0,
+ s_NETWORKING: 0,
+ s_RANDOM: 0,
+ s_RELATIONSHIP: 0
+ },
+ c_Presence: {
+ s_AWAY: 0,
+ s_CHAT: 0,
+ s_DND: 0,
+ s_OFFLINE: 0,
+ s_ONLINE: 0,
+ s_XA: 0
+ },
+ c_Smoker: {
+ s_HEAVILY: 0,
+ s_NO: 0,
+ s_OCCASIONALLY: 0,
+ s_QUIT: 0,
+ s_QUITTING: 0,
+ s_REGULARLY: 0,
+ s_SOCIALLY: 0,
+ s_YES: 0
+ },
+ m_getDisplayValue: 0,
+ m_getKey: 0
+ },
+ c_Environment: {
+ c_ObjectType: {
+ s_ACTIVITY: 0,
+ s_ACTIVITY_MEDIA_ITEM: 0,
+ s_ADDRESS: 0,
+ s_BODY_TYPE: 0,
+ s_EMAIL: 0,
+ s_FILTER_TYPE: 0,
+ s_MESSAGE: 0,
+ s_MESSAGE_TYPE: 0,
+ s_NAME: 0,
+ s_ORGANIZATION: 0,
+ s_PERSON: 0,
+ s_PHONE: 0,
+ s_SORT_ORDER: 0,
+ s_URL: 0
+ },
+ m_getDomain: 0,
+ m_supportsField: 0
+ },
+ c_EscapeType: {
+ s_HTML_ESCAPE: 0,
+ s_NONE: 0
+ },
+ c_IdSpec: {
+ c_Field: {
+ s_GROUP_ID: 0,
+ s_NETWORK_DISTANCE: 0,
+ s_USER_ID: 0
+ },
+ c_PersonId: {
+ s_OWNER: 0,
+ s_VIEWER: 0
+ },
+ m_getField: 0,
+ m_setField: 0
+ },
+ c_MediaItem: {
+ c_Field: {
+ s_MIME_TYPE: 0,
+ s_TYPE: 0,
+ s_URL: 0
+ },
+ c_Type: {
+ s_AUDIO: 0,
+ s_IMAGE: 0,
+ s_VIDEO: 0
+ },
+ m_getField: 0,
+ m_setField: 0
+ },
+ c_Message: {
+ c_Field: {
+ s_BODY: 0,
+ s_BODY_ID: 0,
+ s_TITLE: 0,
+ s_TITLE_ID: 0,
+ s_TYPE: 0
+ },
+ c_Type: {
+ s_EMAIL: 0,
+ s_NOTIFICATION: 0,
+ s_PRIVATE_MESSAGE: 0,
+ s_PUBLIC_MESSAGE: 0
+ },
+ m_getField: 0,
+ m_setField: 0
+ },
+ c_Name: {
+ c_Field: {
+ s_ADDITIONAL_NAME: 0,
+ s_FAMILY_NAME: 0,
+ s_GIVEN_NAME: 0,
+ s_HONORIFIC_PREFIX: 0,
+ s_HONORIFIC_SUFFIX: 0,
+ s_UNSTRUCTURED: 0
+ },
+ m_getField: 0
+ },
+ c_NavigationParameters: {
+ c_DestinationType: {
+ s_RECIPIENT_DESTINATION: 0,
+ s_VIEWER_DESTINATION: 0
+ },
+ c_Field: {
+ s_OWNER: 0,
+ s_PARAMETERS: 0,
+ s_VIEW: 0
+ },
+ m_getField: 0,
+ m_setField: 0
+ },
+ c_Organization: {
+ c_Field: {
+ s_ADDRESS: 0,
+ s_DESCRIPTION: 0,
+ s_END_DATE: 0,
+ s_FIELD: 0,
+ s_NAME: 0,
+ s_SALARY: 0,
+ s_START_DATE: 0,
+ s_SUB_FIELD: 0,
+ s_TITLE: 0,
+ s_WEBPAGE: 0
+ },
+ m_getField: 0
+ },
+ c_Permission: {
+ s_VIEWER: 0
+ },
+ c_Person: {
+ c_Field: {
+ s_ABOUT_ME: 0,
+ s_ACTIVITIES: 0,
+ s_ADDRESSES: 0,
+ s_AGE: 0,
+ s_BODY_TYPE: 0,
+ s_BOOKS: 0,
+ s_CARS: 0,
+ s_CHILDREN: 0,
+ s_CURRENT_LOCATION: 0,
+ s_DATE_OF_BIRTH: 0,
+ s_DRINKER: 0,
+ s_EMAILS: 0,
+ s_ETHNICITY: 0,
+ s_FASHION: 0,
+ s_FOOD: 0,
+ s_GENDER: 0,
+ s_HAPPIEST_WHEN: 0,
+ s_HAS_APP: 0,
+ s_HEROES: 0,
+ s_HUMOR: 0,
+ s_ID: 0,
+ s_INTERESTS: 0,
+ s_JOBS: 0,
+ s_JOB_INTERESTS: 0,
+ s_LANGUAGES_SPOKEN: 0,
+ s_LIVING_ARRANGEMENT: 0,
+ s_LOOKING_FOR: 0,
+ s_MOVIES: 0,
+ s_MUSIC: 0,
+ s_NAME: 0,
+ s_NETWORK_PRESENCE: 0,
+ s_NICKNAME: 0,
+ s_PETS: 0,
+ s_PHONE_NUMBERS: 0,
+ s_POLITICAL_VIEWS: 0,
+ s_PROFILE_SONG: 0,
+ s_PROFILE_URL: 0,
+ s_PROFILE_VIDEO: 0,
+ s_QUOTES: 0,
+ s_RELATIONSHIP_STATUS: 0,
+ s_RELIGION: 0,
+ s_ROMANCE: 0,
+ s_SCARED_OF: 0,
+ s_SCHOOLS: 0,
+ s_SEXUAL_ORIENTATION: 0,
+ s_SMOKER: 0,
+ s_SPORTS: 0,
+ s_STATUS: 0,
+ s_TAGS: 0,
+ s_THUMBNAIL_URL: 0,
+ s_TIME_ZONE: 0,
+ s_TURN_OFFS: 0,
+ s_TURN_ONS: 0,
+ s_TV_SHOWS: 0,
+ s_URLS: 0
+ },
+ m_getDisplayName: 0,
+ m_getField: 0,
+ m_getId: 0,
+ m_isOwner: 0,
+ m_isViewer: 0
+ },
+ c_Phone: {
+ c_Field: {
+ s_NUMBER: 0,
+ s_TYPE: 0
+ },
+ m_getField: 0
+ },
+ c_ResponseItem: {
+ c_Error: {
+ s_BAD_REQUEST: 0,
+ s_FORBIDDEN: 0,
+ s_INTERNAL_ERROR: 0,
+ s_LIMIT_EXCEEDED: 0,
+ s_NOT_IMPLEMENTED: 0,
+ s_UNAUTHORIZED: 0
+ },
+ m_getData: 0,
+ m_getErrorCode: 0,
+ m_getErrorMessage: 0,
+ m_getOriginalDataRequest: 0,
+ m_hadError: 0
+ },
+ c_Url: {
+ c_Field: {
+ s_ADDRESS: 0,
+ s_LINK_TEXT: 0,
+ s_TYPE: 0
+ },
+ m_getField: 0
+ },
+ s_getEnvironment: 0,
+ s_hasPermission: 0,
+ s_newActivity: 0,
+ s_newDataRequest: 0,
+ s_newMediaItem: 0,
+ s_newMessage: 0,
+ s_newNavigationParameters: 0,
+ s_requestCreateActivity: 0,
+ s_requestPermission: 0,
+ s_requestSendMessage: 0,
+ s_requestShareApp: 0
+ }
+ };
+ function whitelist(schema, obj) {
+ if (!obj) { return; } // Occurs for optional features
+ for (var k in schema) {
+ if (schema.hasOwnProperty(k)) {
+ var m = k.match(/^([mcs])_(\w+)$/);
+ var type = m[1], name = m[2];
+ switch (type) {
+ case 'c':
+ ___.allowRead(obj, name);
+ whitelist(schema[k], obj[name]);
+ break;
+ case 'm':
+ ___.allowCall(obj.prototype, name);
+ break;
+ case 'f':
+ ___.allowRead(obj.prototype, name);
+ break;
+ case 's':
+ if ('function' === typeof obj[name]) {
+ ___.allowCall(obj, name);
+ } else {
+ ___.allowRead(obj, name);
+ }
+ break;
+ }
+ }
+ }
}
-
- attachDocumentStub('pre-', uriCallback, outers);
-
- // Temporarily adding some gadgets calls to the opensocial code.
- // This should move into the gadgets js code very soon.
- outers.gadgets = gadgets;
-
- // Adding all of the available opensocial calls as defined in the spec
- outers.opensocial = opensocial;
- ___.all2(
- ___.allowCall, outers.opensocial,
- ['requestSendMessage', 'requestShareApp', 'requestCreateActivity',
- 'hasPermission', 'requestPermission', 'getEnvironment',
'newDataRequest',
- 'newActivity', 'newActivityMediaItem', 'newMessage']);
-
- ___.all2(
- ___.allowCall, opensocial.Collection.prototype,
- ['getById', 'size', 'each', 'asArray', 'getTotalSize', 'getOffset']);
-
- ___.all2(
- ___.allowCall, opensocial.Person.prototype,
- ['getId', 'getDisplayName', 'getField', 'isViewer', 'isOwner']);
-
- ___.allowCall(opensocial.Address.prototype, 'getField');
- ___.allowCall(opensocial.BodyType.prototype, 'getField');
- ___.allowCall(opensocial.Email.prototype, 'getField');
- ___.allowCall(opensocial.Name.prototype, 'getField');
- ___.allowCall(opensocial.Organization.prototype, 'getField');
- ___.allowCall(opensocial.Phone.prototype, 'getField');
- ___.allowCall(opensocial.Url.prototype, 'getField');
-
- ___.allowCall(opensocial.Activity.prototype, 'getId');
- ___.allowCall(opensocial.Activity.prototype, 'getField');
-
- ___.allowCall(opensocial.MediaItem.prototype, 'getField');
-
- ___.allowCall(opensocial.ResponseItem.prototype, 'hadError');
- ___.allowCall(opensocial.ResponseItem.prototype, 'getError');
- ___.allowCall(opensocial.ResponseItem.prototype, 'getOriginalDataRequest');
- ___.allowCall(opensocial.ResponseItem.prototype, 'getData');
-
- ___.allowCall(opensocial.DataResponse.prototype, 'hadError');
- ___.allowCall(opensocial.DataResponse.prototype, 'get');
-
- ___.all2(
- ___.allowCall, opensocial.DataRequest.prototype,
- ['getRequestObjects', 'add', 'send', 'newFetchPersonRequest',
- 'newFetchPeopleRequest', 'newFetchPersonAppDataRequest',
- 'newUpdatePersonAppDataRequest', 'newFetchActivitiesRequest']);
-
- ___.allowCall(opensocial.Environment.prototype, 'getDomain');
- ___.allowCall(opensocial.Environment.prototype, 'supportsField');
-
- ___.allowCall(opensocial.Enum.prototype, 'getKey');
- ___.allowCall(opensocial.Enum.prototype, 'getDisplayValue');
-
- ___.allowCall(opensocial.Message.prototype, 'getField');
- ___.allowCall(opensocial.Message.prototype, 'setField');
-
- var moduleHandler = ___.freeze({
- getOuters: ___.simpleFunc(function() { return outers; }),
- handle: ___.simpleFunc(function(newModule) { newModule(outers); })
- });
-
- ___.setNewModuleHandler(moduleHandler);
+ whitelist(opensocialSchema, window);
};
Modified: incubator/shindig/trunk/features/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/features/pom.xml?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/features/pom.xml (original)
+++ incubator/shindig/trunk/features/pom.xml Thu Jul 17 12:37:30 2008
@@ -72,8 +72,7 @@
<exclude>**/*.gif</exclude>
<exclude>**/*.jpeg</exclude>
<exclude>**/*.png</exclude>
-
- <!-- Caja has some bugs too -->
+ <!-- Caja is already minified -->
<exclude>**/caja/*.js</exclude>
</excludes>
</configuration>
Modified: incubator/shindig/trunk/java/gadgets/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/pom.xml?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/pom.xml (original)
+++ incubator/shindig/trunk/java/gadgets/pom.xml Thu Jul 17 12:37:30 2008
@@ -131,6 +131,11 @@
<scope>compile</scope>
</dependency>
<dependency>
+ <groupId>caja</groupId>
+ <artifactId>json_simple</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
<groupId>net.oauth</groupId>
<artifactId>core</artifactId>
<scope>compile</scope>
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/CajaContentFilter.java
Thu Jul 17 12:37:30 2008
@@ -21,17 +21,19 @@
import org.apache.shindig.gadgets.GadgetContentFilter;
import org.apache.shindig.gadgets.GadgetException;
+import com.google.caja.lexer.CharProducer;
import com.google.caja.lexer.ExternalReference;
+import com.google.caja.lexer.FilePosition;
+import com.google.caja.lexer.InputSource;
import com.google.caja.opensocial.DefaultGadgetRewriter;
-import com.google.caja.opensocial.GadgetContentRewriter;
-import com.google.caja.opensocial.UriCallback;
import com.google.caja.opensocial.GadgetRewriteException;
+import com.google.caja.opensocial.UriCallback;
import com.google.caja.opensocial.UriCallbackException;
import com.google.caja.opensocial.UriCallbackOption;
-import com.google.caja.reporting.SimpleMessageQueue;
-import com.google.caja.reporting.MessageQueue;
import com.google.caja.reporting.Message;
import com.google.caja.reporting.MessageContext;
+import com.google.caja.reporting.MessageQueue;
+import com.google.caja.reporting.SimpleMessageQueue;
import java.io.IOException;
import java.io.Reader;
@@ -65,16 +67,16 @@
};
MessageQueue mq = new SimpleMessageQueue();
- GadgetContentRewriter rw = new DefaultGadgetRewriter(mq);
- Readable input = new StringReader(content);
- Appendable output = new StringBuilder();
+ DefaultGadgetRewriter rw = new DefaultGadgetRewriter(mq);
+ CharProducer input = CharProducer.Factory.create(
+ new StringReader(content),
+ FilePosition.instance(new InputSource(retrievedUri), 2, 2, 1, 1));
+ StringBuilder output = new StringBuilder();
try {
rw.rewriteContent(retrievedUri, input, cb, output);
} catch (GadgetRewriteException e) {
throwCajolingException(e, mq);
- } catch (UriCallbackException e) {
- throwCajolingException(e, mq);
} catch (IOException e) {
throwCajolingException(e, mq);
}
Modified:
incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html
(original)
+++ incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html Thu
Jul 17 12:37:30 2008
@@ -51,10 +51,10 @@
var stateFileUrl = baseUrl + 'state-basicfriendlist.xml';
var stateFileUrlCookie = 'sampleContainerStateFileUrl';
-var useCaja = false;
-var useCache = true;
-var usePermissive = false;
-var doEvil = false;
+var useCaja;
+var useCache;
+var usePermissive;
+var doEvil;
var gadget;
var viewerId = "john.doe";
@@ -93,13 +93,18 @@
});
};
-function changeGadgetUrl() {
+function unpackFormState() {
useCaja = document.getElementById("useCajaCheckbox").checked;
useCache = document.getElementById("useCacheCheckbox").checked;
- gadgets.container.nocache_ = useCache ? 0 : 1;
-
usePermissive = document.getElementById("usePermissiveCheckbox").checked;
doEvil = document.getElementById("doEvilCheckbox").checked;
+}
+
+function changeGadgetUrl() {
+ unpackFormState();
+
+ gadgets.container.nocache_ = useCache ? 0 : 1;
+
setEvilBit();
stateFileUrl = document.getElementById("stateFileUrl").value;
@@ -260,19 +265,23 @@
</script>
</head>
-<body onLoad="initGadget();">
+<body onLoad="unpackFormState(); initGadget();">
<div id="headerDiv">
<div style="float:left">Gadget testing container</div>
<div class="subTitle">
Displaying gadget: <input type="text" size="75" id="gadgetUrl"/>
- <input type="checkbox" id="useCacheCheckbox" checked="true"/>use cache
- <input type="checkbox" id="useCajaCheckbox"/>use caja
- <input type="checkbox" id="usePermissiveCheckbox"/>use permissive
+ <input type="checkbox" id="useCacheCheckbox" checked="true"
+ /><label for="useCacheCheckbox">use cache</label>
+ <input type="checkbox" id="useCajaCheckbox"
+ /><label for="useCajaCheckbox">use caja</label>
+ <input type="checkbox" id="usePermissiveCheckbox"
+ /><label for="usePermissiveCheckbox">use permissive</label>
<br/>
Using state: <input type="text" size="75" id="stateFileUrl"/>
- <input type="checkbox" id="doEvilCheckbox"/>do evil
+ <input type="checkbox" id="doEvilCheckbox"
+ /><label for="doEvilCheckbox">do evil</label>
<br/>
<br/>
Modified: incubator/shindig/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/pom.xml?rev=677699&r1=677698&r2=677699&view=diff
==============================================================================
--- incubator/shindig/trunk/pom.xml (original)
+++ incubator/shindig/trunk/pom.xml Thu Jul 17 12:37:30 2008
@@ -771,7 +771,13 @@
<dependency>
<groupId>caja</groupId>
<artifactId>caja</artifactId>
- <version>r820</version>
+ <version>r1899</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>caja</groupId>
+ <artifactId>json_simple</artifactId>
+ <version>r1</version>
<scope>compile</scope>
</dependency>
<dependency>