bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, CachedScript* cachedScript) { EventTarget* target = errorEventTarget(); if (!target) return false; #if PLATFORM(IOS) if (target == target->toDOMWindow() && isDocument()) { Settings* settings = static_cast<Document*>(this)->settings(); if (settings && !settings->shouldDispatchJavaScriptWindowOnErrorEvents()) return false; } #endif String message = errorMessage; int line = lineNumber; int column = columnNumber; String sourceName = sourceURL; sanitizeScriptError(message, line, column, sourceName, cachedScript); ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; RefPtr<ErrorEvent> errorEvent = ErrorEvent::create(message, sourceName, line, column); target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
void ScriptExecutionContext::destroyedMessagePort(MessagePort& messagePort) { ASSERT((isDocument() && isMainThread()) || (isWorkerGlobalScope() && currentThread() == toWorkerGlobalScope(this)->thread().threadID())); m_messagePorts.remove(&messagePort); }
void ScriptExecutionContext::destroyedMessagePort(MessagePort* port) { ASSERT(port); ASSERT((isDocument() && isMainThread()) || (isWorkerGlobalScope() && currentThread() == static_cast<WorkerGlobalScope*>(this)->thread()->threadID())); m_messagePorts.remove(port); }
void ScriptExecutionContext::createdMessagePort(MessagePort* port) { ASSERT(port); ASSERT((isDocument() && isMainThread()) || (isWorkerGlobalScope() && currentThread() == toWorkerGlobalScope(this)->thread().threadID())); m_messagePorts.add(port); }
void ScriptExecutionContext::createdMessagePort(MessagePort* port) { ASSERT(port); ASSERT((isDocument() && isMainThread()) || (isWorkerContext() && currentThread() == static_cast<WorkerContext*>(this)->thread()->threadID())); m_messagePorts.add(port); }
/** * @return The parent document in which this entity is stored * or the parent's parent document or NULL if none of the parents * are stored in a document. Note that a document is usually * either a Graphic or a Block. */ RS_Document* RS_Entity::getDocument() { if (isDocument()==true) { return (RS_Document*)this; } else if (parent==NULL) { return NULL; } else { return parent->getDocument(); } }
/** * @return The parent document in which this entity is stored * or the parent's parent document or nullptr if none of the parents * are stored in a document. Note that a document is usually * either a Graphic or a Block. */ RS_Document* RS_Entity::getDocument() const{ if (isDocument()) { RS_Document const* ret=static_cast<RS_Document const*>(this); return const_cast<RS_Document*>(ret); } else if (!parent) { return nullptr; } return parent->getDocument(); }
void ScriptExecutionContext::destroyedMessagePort(MessagePort* port) { ASSERT(port); #if ENABLE(WORKERS) ASSERT((isDocument() && isMainThread()) || (isWorkerContext() && currentThread() == static_cast<WorkerContext*>(this)->thread()->threadID())); #endif m_messagePorts.remove(port); }
void ScriptExecutionContext::createdMessagePort(MessagePort* port) { ASSERT(port); #if ENABLE(WORKERS) ASSERT((isDocument() && isMainThread()) || (isWorkerGlobalScope() && currentThread() == static_cast<WorkerGlobalScope*>(this)->thread()->threadID())); #endif m_messagePorts.add(port); }
JSC::VM* ScriptExecutionContext::vm() { if (isDocument()) return JSDOMWindow::commonVM(); if (isWorkerGlobalScope()) return static_cast<WorkerGlobalScope*>(this)->script()->vm(); ASSERT_NOT_REACHED(); return 0; }
/*! Queries the launcher configuration settings and returns true if an application QContent is in the systems PreloadApps list; otherwise returns false. If the QContent is a document then the return value will indicate if the associated application is preloaded Preloaded applications are applications that are launched in the background when Qtopia is started. */ bool QContent::isPreloaded() const { // Preload information is stored in the Launcher config in v1.5. if (isDocument()) return false; QSettings cfg("Trolltech","Launcher"); cfg.beginGroup("AppLoading"); QStringList apps = cfg.value("PreloadApps").toString().split(','); if (apps.contains(executableName())) return true; return false; }
JSC::JSGlobalData* ScriptExecutionContext::globalData() { if (isDocument()) return JSDOMWindow::commonJSGlobalData(); #if ENABLE(WORKERS) if (isWorkerContext()) return static_cast<WorkerContext*>(this)->script()->globalData(); #endif ASSERT_NOT_REACHED(); return 0; }
shared_ptr<rapidxml::xml_document<char> > XmlTree::createRapidXmlDoc( bool createDocument ) const { shared_ptr<rapidxml::xml_document<char> > result( new rapidxml::xml_document<>() ); if( isDocument() || createDocument ) { rapidxml::xml_node<char> *declarationNode = result->allocate_node( rapidxml::node_declaration, "", "" ); result->append_node( declarationNode ); if( isDocument() && ( ! mDocType.empty() ) ) result->append_node( result->allocate_node( rapidxml::node_doctype, "", result->allocate_string( mDocType.c_str() ) ) ); if( isDocument() ) { for( Container::const_iterator childIt = mChildren.begin(); childIt != mChildren.end(); ++childIt ) (*childIt)->appendRapidXmlNode( *result, result.get() ); } else { appendRapidXmlNode( *result, result.get() ); } declarationNode->append_attribute( result->allocate_attribute( "version", "1.0" ) ); declarationNode->append_attribute( result->allocate_attribute( "encoding", "utf-8" ) ); } else appendRapidXmlNode( *result, result.get() ); return result; }
/** * Is this entity visible? * * @return true Only if the entity and the layer it is on are visible. * The Layer might also be nullptr. In that case the layer visiblity * is ignored. */ bool RS_Entity::isVisible() const{ if (!getFlag(RS2::FlagVisible)) { return false; } if (isUndone()) { return false; } /*RS_EntityCotnainer* parent = getParent(); if (parent && parent->isUndone()) { return false; }*/ if (!getLayer()) { return true; } // inserts are usually visible - the entities in them have their own // layers which might be frozen // upd: i'm not sure if that is the best behaviour //if (rtti()==RS2::EntityInsert) { // return true; //} // blocks are visible in editting window, issue#253 if( isDocument() && (rtti()==RS2::EntityBlock || rtti()==RS2::EntityInsert)) { return true; } if (layer /*&& layer->getName()!="ByBlock"*/) { if (!layer->isFrozen()) { return true; } else { return false; } } if (!layer /*&& getLayer()->getName()!="ByBlock"*/) { if (!getLayer()) { return true; } else { if (!getLayer()->isFrozen()) { return true; } else { return false; } } } if (!getBlockOrInsert()) { return true; } if (getBlockOrInsert()->rtti()==RS2::EntityBlock) { return !(getLayer(false) && getLayer(false)->isFrozen()); } if (!getBlockOrInsert()->getLayer()) { return true; } if (!getBlockOrInsert()->getLayer()->isFrozen()) { return true; } return false; }
bool isDocument(const mongo::BSONElement &elem) { return isDocument(elem.type()); }
RefPtr<IDBRequest> IDBObjectStore::putOrAdd(ExecState& state, JSValue value, RefPtr<IDBKey> key, IndexedDB::ObjectStoreOverwriteMode overwriteMode, InlineKeyCheck inlineKeyCheck, ExceptionCodeWithMessage& ec) { LOG(IndexedDB, "IDBObjectStore::putOrAdd"); ASSERT(currentThread() == m_transaction->database().originThreadID()); auto context = scriptExecutionContextFromExecState(&state); if (!context) { ec.code = IDBDatabaseException::UnknownError; ec.message = ASCIILiteral("Unable to store record in object store because it does not have a valid script execution context"); return nullptr; } // The IDB spec for several IDBObjectStore methods states that transaction related exceptions should fire before // the exception for an object store being deleted. // However, a handful of W3C IDB tests expect the deleted exception even though the transaction inactive exception also applies. // Additionally, Chrome and Edge agree with the test, as does Legacy IDB in WebKit. // Until this is sorted out, we'll agree with the test and the majority share browsers. if (m_deleted) { ec.code = IDBDatabaseException::InvalidStateError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The object store has been deleted."); return nullptr; } if (!m_transaction->isActive()) { ec.code = IDBDatabaseException::TransactionInactiveError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The transaction is inactive or finished."); return nullptr; } if (m_transaction->isReadOnly()) { ec.code = IDBDatabaseException::ReadOnlyError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The transaction is read-only."); return nullptr; } RefPtr<SerializedScriptValue> serializedValue = SerializedScriptValue::create(&state, value, nullptr, nullptr); if (state.hadException()) { // Clear the DOM exception from the serializer so we can give a more targeted exception. state.clearException(); ec.code = IDBDatabaseException::DataCloneError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: An object could not be cloned."); return nullptr; } bool privateBrowsingEnabled = false; if (context->isDocument()) { if (auto* page = static_cast<Document*>(context)->page()) privateBrowsingEnabled = page->sessionID().isEphemeral(); } if (serializedValue->hasBlobURLs() && privateBrowsingEnabled) { // https://bugs.webkit.org/show_bug.cgi?id=156347 - Support Blobs in private browsing. ec.code = IDBDatabaseException::DataCloneError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: BlobURLs are not yet supported."); return nullptr; } if (key && !key->isValid()) { ec.code = IDBDatabaseException::DataError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The parameter is not a valid key."); return nullptr; } bool usesInlineKeys = !m_info.keyPath().isNull(); bool usesKeyGenerator = autoIncrement(); if (usesInlineKeys && inlineKeyCheck == InlineKeyCheck::Perform) { if (key) { ec.code = IDBDatabaseException::DataError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The object store uses in-line keys and the key parameter was provided."); return nullptr; } RefPtr<IDBKey> keyPathKey = maybeCreateIDBKeyFromScriptValueAndKeyPath(state, value, m_info.keyPath()); if (keyPathKey && !keyPathKey->isValid()) { ec.code = IDBDatabaseException::DataError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: Evaluating the object store's key path yielded a value that is not a valid key."); return nullptr; } if (!keyPathKey) { if (usesKeyGenerator) { if (!canInjectIDBKeyIntoScriptValue(state, value, m_info.keyPath())) { ec.code = IDBDatabaseException::DataError; return nullptr; } } else { ec.code = IDBDatabaseException::DataError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: Evaluating the object store's key path did not yield a value."); return nullptr; } } if (keyPathKey) { ASSERT(!key); key = keyPathKey; } } else if (!usesKeyGenerator && !key) { ec.code = IDBDatabaseException::DataError; ec.message = ASCIILiteral("Failed to store record in an IDBObjectStore: The object store uses out-of-line keys and has no key generator and the key parameter was not provided."); return nullptr; } return m_transaction->requestPutOrAdd(*context, *this, key.get(), *serializedValue, overwriteMode); }