/* * Runs the test case. */ void runTest() { Document doc; NodeList elementList; Node nameNode; CharacterData child; String childData; doc = (Document) baseT::load("hc_staff", true); elementList = doc.getElementsByTagName(SA::construct_from_utf8("strong")); nameNode = elementList.item(0); child = (CharacterData) nameNode.getFirstChild(); child.insertData(0, SA::construct_from_utf8("Mss. ")); childData = child.getData(); baseT::assertEquals("Mss. Margaret Martin", childData, __LINE__, __FILE__); }
JSValue* jsCharacterDataPrototypeFunctionInsertData(ExecState* exec, JSObject*, JSValue* thisValue, const ArgList& args) { if (!thisValue->isObject(&JSCharacterData::s_info)) return throwError(exec, TypeError); JSCharacterData* castedThisObj = static_cast<JSCharacterData*>(thisValue); CharacterData* imp = static_cast<CharacterData*>(castedThisObj->impl()); ExceptionCode ec = 0; int offset = args.at(exec, 0)->toInt32(exec); if (offset < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } const UString& data = args.at(exec, 1)->toString(exec); imp->insertData(offset, data, ec); setDOMException(exec, ec); return jsUndefined(); }
/* * Runs the test case. */ void runTest() { Document doc; NodeList elementList; Node nameNode; CharacterData child; doc = (Document) baseT::load("staff", true); elementList = doc.getElementsByTagName(SA::construct_from_utf8("address")); nameNode = elementList.item(0); child = (CharacterData) nameNode.getFirstChild(); { boolean success = false; try { child.insertData(-5, SA::construct_from_utf8("ABC")); } catch (const DOMException& ex) { success = (ex.code() == DOMException::INDEX_SIZE_ERR); } assertTrue(success); } }
JSValue* JSCharacterDataPrototypeFunction::callAsFunction(ExecState* exec, JSObject* thisObj, const List& args) { if (!thisObj->inherits(&JSCharacterData::info)) return throwError(exec, TypeError); CharacterData* imp = static_cast<CharacterData*>(static_cast<JSCharacterData*>(thisObj)->impl()); switch (id) { case JSCharacterData::SubstringDataFuncNum: { ExceptionCode ec = 0; bool offsetOk; int offset = args[0]->toInt32(exec, offsetOk); if (!offsetOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (offset < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } bool lengthOk; int length = args[1]->toInt32(exec, lengthOk); if (!lengthOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (length < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } KJS::JSValue* result = jsStringOrNull(imp->substringData(offset, length, ec)); setDOMException(exec, ec); return result; } case JSCharacterData::AppendDataFuncNum: { ExceptionCode ec = 0; String data = args[0]->toString(exec); imp->appendData(data, ec); setDOMException(exec, ec); return jsUndefined(); } case JSCharacterData::InsertDataFuncNum: { ExceptionCode ec = 0; bool offsetOk; int offset = args[0]->toInt32(exec, offsetOk); if (!offsetOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (offset < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } String data = args[1]->toString(exec); imp->insertData(offset, data, ec); setDOMException(exec, ec); return jsUndefined(); } case JSCharacterData::DeleteDataFuncNum: { ExceptionCode ec = 0; bool offsetOk; int offset = args[0]->toInt32(exec, offsetOk); if (!offsetOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (offset < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } bool lengthOk; int length = args[1]->toInt32(exec, lengthOk); if (!lengthOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (length < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } imp->deleteData(offset, length, ec); setDOMException(exec, ec); return jsUndefined(); } case JSCharacterData::ReplaceDataFuncNum: { ExceptionCode ec = 0; bool offsetOk; int offset = args[0]->toInt32(exec, offsetOk); if (!offsetOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (offset < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } bool lengthOk; int length = args[1]->toInt32(exec, lengthOk); if (!lengthOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (length < 0) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } String data = args[2]->toString(exec); imp->replaceData(offset, length, data, ec); setDOMException(exec, ec); return jsUndefined(); } } return 0; }