bool ContextMenuContextData::decode(IPC::ArgumentDecoder& decoder, ContextMenuContextData& result) { if (!decoder.decode(result.m_menuLocation)) return false; if (!decoder.decode(result.m_menuItems)) return false; if (!decoder.decode(result.m_webHitTestResultData)) return false; if (!decoder.decode(result.m_selectedText)) return false; #if ENABLE(SERVICE_CONTROLS) ShareableBitmap::Handle handle; if (!decoder.decode(handle)) return false; if (!handle.isNull()) result.m_controlledImage = ShareableBitmap::create(handle, SharedMemory::Protection::ReadOnly); #endif return true; }
void FindController::getImageForFindMatch(uint32_t matchIndex) { if (matchIndex >= m_findMatches.size()) return; Frame* frame = m_findMatches[matchIndex]->startContainer().document().frame(); if (!frame) return; VisibleSelection oldSelection = frame->selection().selection(); frame->selection().setSelection(VisibleSelection(*m_findMatches[matchIndex])); RefPtr<ShareableBitmap> selectionSnapshot = WebFrame::fromCoreFrame(*frame)->createSelectionSnapshot(); frame->selection().setSelection(oldSelection); if (!selectionSnapshot) return; ShareableBitmap::Handle handle; selectionSnapshot->createHandle(handle); if (handle.isNull()) return; m_webPage->send(Messages::WebPageProxy::DidGetImageForFindMatch(handle, matchIndex)); }
PassRefPtr<ShareableBitmap> PluginProxy::snapshot() { ShareableBitmap::Handle snapshotStoreHandle; m_connection->connection()->sendSync(Messages::PluginControllerProxy::Snapshot(), Messages::PluginControllerProxy::Snapshot::Reply(snapshotStoreHandle), m_pluginInstanceID); if (snapshotStoreHandle.isNull()) return 0; RefPtr<ShareableBitmap> snapshotBuffer = ShareableBitmap::create(snapshotStoreHandle); return snapshotBuffer.release(); }
void FindController::getImageForFindMatch(uint32_t matchIndex) { if (matchIndex >= m_findMatches.size()) return; Frame* frame = m_findMatches[matchIndex]->startContainer()->document().frame(); if (!frame) return; VisibleSelection oldSelection = frame->selection().selection(); frame->selection().setSelection(VisibleSelection(m_findMatches[matchIndex].get())); IntRect selectionRect; ShareableBitmap::Handle handle; getFindIndicatorBitmapAndRect(frame, handle, selectionRect); frame->selection().setSelection(oldSelection); if (handle.isNull()) return; m_webPage->send(Messages::WebPageProxy::DidGetImageForFindMatch(handle, matchIndex)); }
bool InteractionInformationAtPosition::decode(IPC::ArgumentDecoder& decoder, InteractionInformationAtPosition& result) { if (!decoder.decode(result.point)) return false; if (!decoder.decode(result.nodeAtPositionIsAssistedNode)) return false; if (!decoder.decode(result.isSelectable)) return false; if (!decoder.decode(result.isNearMarkedText)) return false; if (!decoder.decode(result.touchCalloutEnabled)) return false; if (!decoder.decode(result.clickableElementName)) return false; if (!decoder.decode(result.url)) return false; if (!decoder.decode(result.title)) return false; if (!decoder.decode(result.bounds)) return false; ShareableBitmap::Handle handle; if (!decoder.decode(handle)) return false; if (!handle.isNull()) result.image = ShareableBitmap::create(handle, SharedMemory::Protection::ReadOnly); return true; }
void PluginControllerProxy::geometryDidChange(const IntSize& pluginSize, const IntRect& clipRect, const AffineTransform& pluginToRootViewTransform, float contentsScaleFactor, const ShareableBitmap::Handle& backingStoreHandle) { ASSERT(m_plugin); m_pluginSize = pluginSize; if (contentsScaleFactor != m_contentsScaleFactor) { m_contentsScaleFactor = contentsScaleFactor; m_plugin->contentsScaleFactorChanged(m_contentsScaleFactor); } platformGeometryDidChange(); if (!backingStoreHandle.isNull()) { // Create a new backing store. m_backingStore = ShareableBitmap::create(backingStoreHandle); } m_plugin->geometryDidChange(pluginSize, clipRect, pluginToRootViewTransform); }