Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Unified Diff: Source/bindings/core/dart/DartDOMWrapper.cpp

Issue 1532413002: Added Dartium changes onto 45.0.2454.104 (Closed) Base URL: http://src.chromium.org/blink/branches/chromium/2454
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/core/dart/DartDOMWrapper.h ('k') | Source/bindings/core/dart/DartEventListener.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/core/dart/DartDOMWrapper.cpp
diff --git a/Source/bindings/core/dart/DartDOMWrapper.cpp b/Source/bindings/core/dart/DartDOMWrapper.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d1a64f77fd22738156aa2e1afad9d9d6a77d8d8d
--- /dev/null
+++ b/Source/bindings/core/dart/DartDOMWrapper.cpp
@@ -0,0 +1,92 @@
+// Copyright 2011, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "config.h"
+#include "bindings/core/dart/DartDOMWrapper.h"
+
+#include "bindings/core/dart/DartUtilities.h"
+#include "core/html/HTMLFormControlElement.h"
+#include "core/html/LabelableElement.h"
+#include "wtf/StringExtras.h"
+#include "wtf/text/WTFString.h"
+
+#include <stdio.h>
+
+namespace blink {
+
+Dart_PersistentHandle DartDOMWrapper::dartClass(
+ DartDOMData* domData, intptr_t cid)
+{
+ ASSERT(cid < NumWebkitClassIds);
+
+ ClassTable* table = domData->classHandleCache();
+
+ Dart_PersistentHandle persistentType = (*table)[cid];
+
+ if (persistentType)
+ return persistentType;
+
+ // Slow path: we have not encountered this type yet. Look up the registered wrapper.
+ Dart_Handle htmlLibrary = domData->htmlLibrary();
+ Dart_Handle type = Dart_Null();
+ Dart_Handle getType = Dart_NewStringFromCString("_getType");
+ intptr_t searchid = cid;
+ while (searchid > 0 && Dart_IsNull(type)) {
+ const char* keyName = DartWebkitClassInfo[searchid].jsName;
+ Dart_Handle key = Dart_NewStringFromCString(keyName);
+ type = Dart_Invoke(htmlLibrary, getType, 1, &key);
+ if (Dart_IsError(type)) {
+ DartUtilities::reportProblem(domData->scriptExecutionContext(), type);
+ break;
+ }
+
+ if (Dart_IsNull(type)) {
+ searchid = DartWebkitClassInfo[searchid].base_class_id;
+ }
+ }
+ if ((searchid <= 0) || Dart_IsError(type) || !Dart_IsType(type) || Dart_IsNull(type)) {
+ Dart_Handle error;
+ if (Dart_IsError(type)) {
+ error = type;
+ } else {
+ char message[256];
+ snprintf(message, 256, "Unsupported native browser type: %s", DartWebkitClassInfo[cid].jsName);
+ error = Dart_NewApiError(message);
+ }
+ DartUtilities::reportProblem(domData->scriptExecutionContext(), error);
+ type = Dart_GetType(htmlLibrary, Dart_NewStringFromCString("_UnsupportedBrowserObject"), 0, 0);
+ }
+
+ persistentType = Dart_NewPersistentHandle(type);
+ (*table)[cid] = persistentType;
+
+ return persistentType;
+}
+
+}
« no previous file with comments | « Source/bindings/core/dart/DartDOMWrapper.h ('k') | Source/bindings/core/dart/DartEventListener.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698