int64_t DOMFileImplBase::GetFileId() { int64_t id = -1; if (IsStoredFile() && IsWholeFile() && !IsSnapshot()) { if (!indexedDB::IndexedDatabaseManager::IsClosed()) { indexedDB::IndexedDatabaseManager::FileMutex().Lock(); } NS_ASSERTION(!mFileInfos.IsEmpty(), "A stored file must have at least one file info!"); nsRefPtr<indexedDB::FileInfo>& fileInfo = mFileInfos.ElementAt(0); if (fileInfo) { id = fileInfo->Id(); } if (!indexedDB::IndexedDatabaseManager::IsClosed()) { indexedDB::IndexedDatabaseManager::FileMutex().Unlock(); } } return id; }
indexedDB::FileInfo* DOMFileImplBase::GetFileInfo(indexedDB::FileManager* aFileManager) { if (indexedDB::IndexedDatabaseManager::IsClosed()) { NS_ERROR("Shouldn't be called after shutdown!"); return nullptr; } // A slice created from a stored file must keep the file info alive. // However, we don't support sharing of slices yet, so the slice must be // copied again. That's why we have to ignore the first file info. // Snapshots are handled in a similar way (they have to be copied). uint32_t startIndex; if (IsStoredFile() && (!IsWholeFile() || IsSnapshot())) { startIndex = 1; } else { startIndex = 0; } MutexAutoLock lock(indexedDB::IndexedDatabaseManager::FileMutex()); for (uint32_t i = startIndex; i < mFileInfos.Length(); i++) { nsRefPtr<indexedDB::FileInfo>& fileInfo = mFileInfos.ElementAt(i); if (fileInfo->Manager() == aFileManager) { return fileInfo; } } return nullptr; }
BOOL CFracticeDoc::OnOpenDocument(LPCTSTR lpszPathName) { BOOL retc; if (IsSnapshot(lpszPathName)) // if path is a snapshot retc = ReadSnapshot(lpszPathName); else { // path is a project CMainFrame::CStatusMsg status(IDS_DOC_OPENING); retc = CDocument::OnOpenDocument(lpszPathName); // do base class open } // if open succeeded and first new document is unmodified if (retc && m_FirstNewDoc != NULL && !m_FirstNewDoc->IsModified()) m_FirstNewDoc->Close(); // close first new document return(retc); }