Response InspectorDOMStorageAgent::findStorageArea(
    std::unique_ptr<protocol::DOMStorage::StorageId> storageId,
    LocalFrame*& frame,
    StorageArea*& storageArea) {
  String securityOrigin = storageId->getSecurityOrigin();
  bool isLocalStorage = storageId->getIsLocalStorage();

  if (!m_page->mainFrame()->isLocalFrame())
    return Response::InternalError();

  InspectedFrames* inspectedFrames =
      InspectedFrames::create(m_page->deprecatedLocalMainFrame());
  frame = inspectedFrames->frameWithSecurityOrigin(securityOrigin);
  if (!frame)
    return Response::Error("Frame not found for the given security origin");

  if (isLocalStorage) {
    storageArea = StorageNamespace::localStorageArea(
        frame->document()->getSecurityOrigin());
    return Response::OK();
  }
  StorageNamespace* sessionStorage =
      StorageNamespaceController::from(m_page)->sessionStorage();
  if (!sessionStorage)
    return Response::Error("SessionStorage is not supported");
  storageArea =
      sessionStorage->storageArea(frame->document()->getSecurityOrigin());
  return Response::OK();
}