OLD | NEW |
1 // Copyright (c) 2008, Google Inc. | 1 // Copyright (c) 2008, Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 V8CustomXPathNSResolver::V8CustomXPathNSResolver(v8::Handle<v8::Object> resolver
, v8::Isolate* isolate) | 51 V8CustomXPathNSResolver::V8CustomXPathNSResolver(v8::Handle<v8::Object> resolver
, v8::Isolate* isolate) |
52 : m_resolver(resolver) | 52 : m_resolver(resolver) |
53 , m_isolate(isolate) | 53 , m_isolate(isolate) |
54 { | 54 { |
55 } | 55 } |
56 | 56 |
57 V8CustomXPathNSResolver::~V8CustomXPathNSResolver() | 57 V8CustomXPathNSResolver::~V8CustomXPathNSResolver() |
58 { | 58 { |
59 } | 59 } |
60 | 60 |
61 String V8CustomXPathNSResolver::lookupNamespaceURI(const String& prefix) | 61 AtomicString V8CustomXPathNSResolver::lookupNamespaceURI(const String& prefix) |
62 { | 62 { |
63 v8::Handle<v8::Function> lookupNamespaceURIFunc; | 63 v8::Handle<v8::Function> lookupNamespaceURIFunc; |
64 v8::Handle<v8::String> lookupNamespaceURIName = v8AtomicString(m_isolate, "l
ookupNamespaceURI"); | 64 v8::Handle<v8::String> lookupNamespaceURIName = v8AtomicString(m_isolate, "l
ookupNamespaceURI"); |
65 | 65 |
66 // Check if the resolver has a function property named lookupNamespaceURI. | 66 // Check if the resolver has a function property named lookupNamespaceURI. |
67 if (m_resolver->Has(lookupNamespaceURIName)) { | 67 if (m_resolver->Has(lookupNamespaceURIName)) { |
68 v8::Handle<v8::Value> lookupNamespaceURI = m_resolver->Get(lookupNamespa
ceURIName); | 68 v8::Handle<v8::Value> lookupNamespaceURI = m_resolver->Get(lookupNamespa
ceURIName); |
69 if (lookupNamespaceURI->IsFunction()) | 69 if (lookupNamespaceURI->IsFunction()) |
70 lookupNamespaceURIFunc = v8::Handle<v8::Function>::Cast(lookupNamesp
aceURI); | 70 lookupNamespaceURIFunc = v8::Handle<v8::Function>::Cast(lookupNamesp
aceURI); |
71 } | 71 } |
72 | 72 |
73 if (lookupNamespaceURIFunc.IsEmpty() && !m_resolver->IsFunction()) { | 73 if (lookupNamespaceURIFunc.IsEmpty() && !m_resolver->IsFunction()) { |
74 Frame* frame = activeDOMWindow()->frame(); | 74 Frame* frame = activeDOMWindow()->frame(); |
75 if (frame && frame->page()) | 75 if (frame && frame->page()) |
76 frame->page()->console().addMessage(JSMessageSource, ErrorMessageLev
el, "XPathNSResolver does not have a lookupNamespaceURI method."); | 76 frame->page()->console().addMessage(JSMessageSource, ErrorMessageLev
el, "XPathNSResolver does not have a lookupNamespaceURI method."); |
77 return String(); | 77 return nullAtom; |
78 } | 78 } |
79 | 79 |
80 // Catch exceptions from calling the namespace resolver. | 80 // Catch exceptions from calling the namespace resolver. |
81 v8::TryCatch tryCatch; | 81 v8::TryCatch tryCatch; |
82 tryCatch.SetVerbose(true); // Print exceptions to console. | 82 tryCatch.SetVerbose(true); // Print exceptions to console. |
83 | 83 |
84 const int argc = 1; | 84 const int argc = 1; |
85 v8::Handle<v8::Value> argv[argc] = { v8String(m_isolate, prefix) }; | 85 v8::Handle<v8::Value> argv[argc] = { v8String(m_isolate, prefix) }; |
86 v8::Handle<v8::Function> function = lookupNamespaceURIFunc.IsEmpty() ? v8::H
andle<v8::Function>::Cast(m_resolver) : lookupNamespaceURIFunc; | 86 v8::Handle<v8::Function> function = lookupNamespaceURIFunc.IsEmpty() ? v8::H
andle<v8::Function>::Cast(m_resolver) : lookupNamespaceURIFunc; |
87 | 87 |
88 v8::Handle<v8::Value> retval = ScriptController::callFunction(activeExecutio
nContext(), function, m_resolver, argc, argv, m_isolate); | 88 v8::Handle<v8::Value> retval = ScriptController::callFunction(activeExecutio
nContext(), function, m_resolver, argc, argv, m_isolate); |
89 | 89 |
90 // Eat exceptions from namespace resolver and return an empty string. This w
ill most likely cause NamespaceError. | 90 // Eat exceptions from namespace resolver and return an empty string. This w
ill most likely cause NamespaceError. |
91 if (tryCatch.HasCaught()) | 91 if (tryCatch.HasCaught()) |
92 return String(); | 92 return nullAtom; |
93 | 93 |
94 return toWebCoreStringWithNullCheck(retval); | 94 V8TRYCATCH_FOR_V8STRINGRESOURCE_RETURN(V8StringResource<WithNullCheck>, retu
rnString, retval, nullAtom); |
| 95 return returnString; |
95 } | 96 } |
96 | 97 |
97 } // namespace WebCore | 98 } // namespace WebCore |
OLD | NEW |