Un-breaking the code due to failed test case with htmlunit

Review by: conroy@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10424 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/plugins/npapi/LocalObjectTable.h b/plugins/npapi/LocalObjectTable.h
index 57a5887..acfbf2f 100644
--- a/plugins/npapi/LocalObjectTable.h
+++ b/plugins/npapi/LocalObjectTable.h
@@ -21,43 +21,24 @@
 #include "Debug.h"
 
 #include "mozincludes.h"
-#include "NPVariantUtil.h"
 
 class LocalObjectTable {
 private:
-  /* The host expects Value objects to have int's for JSO id's, hence the
-   * dual mapping.  ObjectMap is for host communication (Value.getJsObjectId)
-   * and the IdMap is for browser communication (NPObject to ID).
-   */
   typedef std::map<int, NPObject*> ObjectMap;
-  typedef std::map<NPObject*,int> IdMap;
-
-  NPP npp;
 
   int nextId;
   ObjectMap objects;
-  IdMap ids;
   bool dontFree;
 
-  bool jsIdentitySafe;
-
-  const NPIdentifier gwtId;
-
   void setFree(int id) {
-    NPObject *obj = getById(id);
-    if(!obj) {
+    if (objects.erase(id) != 1) {
       Debug::log(Debug::Error) << "setFree(id=" << id << "): object not in table"
         << Debug::flush;
-      return;
     }
-    ids.erase(obj);
-    objects.erase(id);
   }
 
 public:
-  LocalObjectTable(NPP npp, bool jsIdentitySafe):
-    nextId(0), dontFree(false), jsIdentitySafe(jsIdentitySafe),
-    gwtId(NPN_GetStringIdentifier("__gwt_ObjectId")) {
+  LocalObjectTable(): nextId(0), dontFree(false) {
   }
 
   virtual ~LocalObjectTable();
@@ -68,67 +49,29 @@
   int add(NPObject* obj) {
     int id = nextId++;
     set(id, obj);
-
-    if (!jsIdentitySafe) {
-      NPVariant idVariant;
-      Debug::log(Debug::Debugging) << "LocalObjectTable::set(): setting expando("
-          << id << ")" << Debug::flush;
-      INT32_TO_NPVARIANT(id,idVariant);
-      if (!NPN_SetProperty(npp, obj, gwtId, &idVariant)) {
-        Debug::log(Debug::Error) << "Setting GWT id on object failed" << Debug::flush;
-      }
-    }
-
     return id;
   }
 
   void set(int id, NPObject* obj) {
-    Debug::log(Debug::Debugging) << "LocalObjectTable::set(id=" << id << ",obj=" << (void*)obj
+    Debug::log(Debug::Spam) << "LocalObjectTable::set(id=" << id << ",obj=" << (void*)obj
         << ")" << Debug::flush;
-    if (!jsIdentitySafe) {
-      ObjectMap::iterator it;
-      it = objects.find(id);
-      if( it != objects.end() ) {
-        if (it->second != obj) {
-          //The JSO has changed and we need to update the map, releasing
-          //the old and remembering the new object.
-          ids.erase(it->second);
-          NPN_ReleaseObject(it->second);
-          NPN_RetainObject(obj);
-        } else {
-          //do nothing; object exists and is already mapped
-          return;
-        }
-      } else {
-        //New insertion, retain the object in the table
-        NPN_RetainObject(obj);
-      }
-    } else {
-      //Not dealing with identity hack, retain
-      NPN_RetainObject(obj);
-    }
     objects[id] = obj;
-    ids[obj] = id;
-
     // keep track that we hold a reference in the table
+    NPN_RetainObject(obj);
   }
 
   void free(int id) {
-    Debug::log(Debug::Debugging) << "LocalObjectTable::free(id=" << id << ")" << Debug::flush;
+    Debug::log(Debug::Spam) << "LocalObjectTable::free(id=" << id << ")" << Debug::flush;
     ObjectMap::iterator it = objects.find(id);
     if (it == objects.end()) {
       Debug::log(Debug::Error) << "Freeing freed object slot " << id << Debug::flush;
       return;
     }
-    if (!jsIdentitySafe) {
-      Debug::log(Debug::Debugging) << "removing expando!" << Debug::flush;
-      NPN_RemoveProperty(npp, it->second, gwtId);
-    }
-    setFree(id);
     if (!dontFree) {
       NPObject* obj = it->second;
       NPN_ReleaseObject(obj);
     }
+    setFree(id);
   }
 
   void freeAll() {
@@ -142,7 +85,7 @@
     objects.clear();
   }
 
-  NPObject* getById(int id) {
+  NPObject* get(int id) {
     ObjectMap::iterator it = objects.find(id);
     if (it == objects.end()) {
       Debug::log(Debug::Error) << "LocalObjectTable::get(id=" << id
@@ -151,30 +94,6 @@
     return it->second;
   }
 
-  int getObjectId(NPObject* jsObject) {
-    int id = -1;
-    if(!jsIdentitySafe) {
-      NPVariant idVariant;
-      VOID_TO_NPVARIANT(idVariant);
-      Debug::log(Debug::Debugging) << "LocalObjectTable::get(): expando test"
-          << Debug::flush;
-      if (NPN_GetProperty(npp, jsObject, gwtId, &idVariant) &&
-          NPVariantUtil::isInt(idVariant)) {
-        id = NPVariantUtil::getAsInt(idVariant);
-        Debug::log(Debug::Debugging) << "LocalObjectTable::get(): expando: "
-            << id << Debug::flush;
-        set(id, jsObject);
-      }
-      NPN_ReleaseVariantValue(&idVariant);
-    } else {
-      IdMap::iterator it = ids.find(jsObject);
-      if (it != ids.end()) {
-        id = it->second;
-      }
-    }
-    return id;
-  }
-
   void setDontFree(bool dontFree) {
     this->dontFree = dontFree;
   }