cdp-0.0.1.0: src/CDP/Domains/Audits.hs
{-# LANGUAGE OverloadedStrings, RecordWildCards, TupleSections #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
{- |
= Audits
Audits domain allows investigation of page violations and possible improvements.
-}
module CDP.Domains.Audits (module CDP.Domains.Audits) where
import Control.Applicative ((<$>))
import Control.Monad
import Control.Monad.Loops
import Control.Monad.Trans (liftIO)
import qualified Data.Map as M
import Data.Maybe
import Data.Functor.Identity
import Data.String
import qualified Data.Text as T
import qualified Data.List as List
import qualified Data.Text.IO as TI
import qualified Data.Vector as V
import Data.Aeson.Types (Parser(..))
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.:?), (.=), (.!=), (.:!))
import qualified Data.Aeson as A
import qualified Network.HTTP.Simple as Http
import qualified Network.URI as Uri
import qualified Network.WebSockets as WS
import Control.Concurrent
import qualified Data.ByteString.Lazy as BS
import qualified Data.Map as Map
import Data.Proxy
import System.Random
import GHC.Generics
import Data.Char
import Data.Default
import CDP.Internal.Utils
import CDP.Domains.DOMPageNetworkEmulationSecurity as DOMPageNetworkEmulationSecurity
import CDP.Domains.Runtime as Runtime
-- | Type 'Audits.AffectedCookie'.
-- Information about a cookie that is affected by an inspector issue.
data AuditsAffectedCookie = AuditsAffectedCookie
{
-- | The following three properties uniquely identify a cookie
auditsAffectedCookieName :: T.Text,
auditsAffectedCookiePath :: T.Text,
auditsAffectedCookieDomain :: T.Text
}
deriving (Eq, Show)
instance FromJSON AuditsAffectedCookie where
parseJSON = A.withObject "AuditsAffectedCookie" $ \o -> AuditsAffectedCookie
<$> o A..: "name"
<*> o A..: "path"
<*> o A..: "domain"
instance ToJSON AuditsAffectedCookie where
toJSON p = A.object $ catMaybes [
("name" A..=) <$> Just (auditsAffectedCookieName p),
("path" A..=) <$> Just (auditsAffectedCookiePath p),
("domain" A..=) <$> Just (auditsAffectedCookieDomain p)
]
-- | Type 'Audits.AffectedRequest'.
-- Information about a request that is affected by an inspector issue.
data AuditsAffectedRequest = AuditsAffectedRequest
{
-- | The unique request id.
auditsAffectedRequestRequestId :: DOMPageNetworkEmulationSecurity.NetworkRequestId,
auditsAffectedRequestUrl :: Maybe T.Text
}
deriving (Eq, Show)
instance FromJSON AuditsAffectedRequest where
parseJSON = A.withObject "AuditsAffectedRequest" $ \o -> AuditsAffectedRequest
<$> o A..: "requestId"
<*> o A..:? "url"
instance ToJSON AuditsAffectedRequest where
toJSON p = A.object $ catMaybes [
("requestId" A..=) <$> Just (auditsAffectedRequestRequestId p),
("url" A..=) <$> (auditsAffectedRequestUrl p)
]
-- | Type 'Audits.AffectedFrame'.
-- Information about the frame affected by an inspector issue.
data AuditsAffectedFrame = AuditsAffectedFrame
{
auditsAffectedFrameFrameId :: DOMPageNetworkEmulationSecurity.PageFrameId
}
deriving (Eq, Show)
instance FromJSON AuditsAffectedFrame where
parseJSON = A.withObject "AuditsAffectedFrame" $ \o -> AuditsAffectedFrame
<$> o A..: "frameId"
instance ToJSON AuditsAffectedFrame where
toJSON p = A.object $ catMaybes [
("frameId" A..=) <$> Just (auditsAffectedFrameFrameId p)
]
-- | Type 'Audits.CookieExclusionReason'.
data AuditsCookieExclusionReason = AuditsCookieExclusionReasonExcludeSameSiteUnspecifiedTreatedAsLax | AuditsCookieExclusionReasonExcludeSameSiteNoneInsecure | AuditsCookieExclusionReasonExcludeSameSiteLax | AuditsCookieExclusionReasonExcludeSameSiteStrict | AuditsCookieExclusionReasonExcludeInvalidSameParty | AuditsCookieExclusionReasonExcludeSamePartyCrossPartyContext | AuditsCookieExclusionReasonExcludeDomainNonASCII
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsCookieExclusionReason where
parseJSON = A.withText "AuditsCookieExclusionReason" $ \v -> case v of
"ExcludeSameSiteUnspecifiedTreatedAsLax" -> pure AuditsCookieExclusionReasonExcludeSameSiteUnspecifiedTreatedAsLax
"ExcludeSameSiteNoneInsecure" -> pure AuditsCookieExclusionReasonExcludeSameSiteNoneInsecure
"ExcludeSameSiteLax" -> pure AuditsCookieExclusionReasonExcludeSameSiteLax
"ExcludeSameSiteStrict" -> pure AuditsCookieExclusionReasonExcludeSameSiteStrict
"ExcludeInvalidSameParty" -> pure AuditsCookieExclusionReasonExcludeInvalidSameParty
"ExcludeSamePartyCrossPartyContext" -> pure AuditsCookieExclusionReasonExcludeSamePartyCrossPartyContext
"ExcludeDomainNonASCII" -> pure AuditsCookieExclusionReasonExcludeDomainNonASCII
"_" -> fail "failed to parse AuditsCookieExclusionReason"
instance ToJSON AuditsCookieExclusionReason where
toJSON v = A.String $ case v of
AuditsCookieExclusionReasonExcludeSameSiteUnspecifiedTreatedAsLax -> "ExcludeSameSiteUnspecifiedTreatedAsLax"
AuditsCookieExclusionReasonExcludeSameSiteNoneInsecure -> "ExcludeSameSiteNoneInsecure"
AuditsCookieExclusionReasonExcludeSameSiteLax -> "ExcludeSameSiteLax"
AuditsCookieExclusionReasonExcludeSameSiteStrict -> "ExcludeSameSiteStrict"
AuditsCookieExclusionReasonExcludeInvalidSameParty -> "ExcludeInvalidSameParty"
AuditsCookieExclusionReasonExcludeSamePartyCrossPartyContext -> "ExcludeSamePartyCrossPartyContext"
AuditsCookieExclusionReasonExcludeDomainNonASCII -> "ExcludeDomainNonASCII"
-- | Type 'Audits.CookieWarningReason'.
data AuditsCookieWarningReason = AuditsCookieWarningReasonWarnSameSiteUnspecifiedCrossSiteContext | AuditsCookieWarningReasonWarnSameSiteNoneInsecure | AuditsCookieWarningReasonWarnSameSiteUnspecifiedLaxAllowUnsafe | AuditsCookieWarningReasonWarnSameSiteStrictLaxDowngradeStrict | AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeStrict | AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeLax | AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeStrict | AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeLax | AuditsCookieWarningReasonWarnAttributeValueExceedsMaxSize | AuditsCookieWarningReasonWarnDomainNonASCII
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsCookieWarningReason where
parseJSON = A.withText "AuditsCookieWarningReason" $ \v -> case v of
"WarnSameSiteUnspecifiedCrossSiteContext" -> pure AuditsCookieWarningReasonWarnSameSiteUnspecifiedCrossSiteContext
"WarnSameSiteNoneInsecure" -> pure AuditsCookieWarningReasonWarnSameSiteNoneInsecure
"WarnSameSiteUnspecifiedLaxAllowUnsafe" -> pure AuditsCookieWarningReasonWarnSameSiteUnspecifiedLaxAllowUnsafe
"WarnSameSiteStrictLaxDowngradeStrict" -> pure AuditsCookieWarningReasonWarnSameSiteStrictLaxDowngradeStrict
"WarnSameSiteStrictCrossDowngradeStrict" -> pure AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeStrict
"WarnSameSiteStrictCrossDowngradeLax" -> pure AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeLax
"WarnSameSiteLaxCrossDowngradeStrict" -> pure AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeStrict
"WarnSameSiteLaxCrossDowngradeLax" -> pure AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeLax
"WarnAttributeValueExceedsMaxSize" -> pure AuditsCookieWarningReasonWarnAttributeValueExceedsMaxSize
"WarnDomainNonASCII" -> pure AuditsCookieWarningReasonWarnDomainNonASCII
"_" -> fail "failed to parse AuditsCookieWarningReason"
instance ToJSON AuditsCookieWarningReason where
toJSON v = A.String $ case v of
AuditsCookieWarningReasonWarnSameSiteUnspecifiedCrossSiteContext -> "WarnSameSiteUnspecifiedCrossSiteContext"
AuditsCookieWarningReasonWarnSameSiteNoneInsecure -> "WarnSameSiteNoneInsecure"
AuditsCookieWarningReasonWarnSameSiteUnspecifiedLaxAllowUnsafe -> "WarnSameSiteUnspecifiedLaxAllowUnsafe"
AuditsCookieWarningReasonWarnSameSiteStrictLaxDowngradeStrict -> "WarnSameSiteStrictLaxDowngradeStrict"
AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeStrict -> "WarnSameSiteStrictCrossDowngradeStrict"
AuditsCookieWarningReasonWarnSameSiteStrictCrossDowngradeLax -> "WarnSameSiteStrictCrossDowngradeLax"
AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeStrict -> "WarnSameSiteLaxCrossDowngradeStrict"
AuditsCookieWarningReasonWarnSameSiteLaxCrossDowngradeLax -> "WarnSameSiteLaxCrossDowngradeLax"
AuditsCookieWarningReasonWarnAttributeValueExceedsMaxSize -> "WarnAttributeValueExceedsMaxSize"
AuditsCookieWarningReasonWarnDomainNonASCII -> "WarnDomainNonASCII"
-- | Type 'Audits.CookieOperation'.
data AuditsCookieOperation = AuditsCookieOperationSetCookie | AuditsCookieOperationReadCookie
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsCookieOperation where
parseJSON = A.withText "AuditsCookieOperation" $ \v -> case v of
"SetCookie" -> pure AuditsCookieOperationSetCookie
"ReadCookie" -> pure AuditsCookieOperationReadCookie
"_" -> fail "failed to parse AuditsCookieOperation"
instance ToJSON AuditsCookieOperation where
toJSON v = A.String $ case v of
AuditsCookieOperationSetCookie -> "SetCookie"
AuditsCookieOperationReadCookie -> "ReadCookie"
-- | Type 'Audits.CookieIssueDetails'.
-- This information is currently necessary, as the front-end has a difficult
-- time finding a specific cookie. With this, we can convey specific error
-- information without the cookie.
data AuditsCookieIssueDetails = AuditsCookieIssueDetails
{
-- | If AffectedCookie is not set then rawCookieLine contains the raw
-- Set-Cookie header string. This hints at a problem where the
-- cookie line is syntactically or semantically malformed in a way
-- that no valid cookie could be created.
auditsCookieIssueDetailsCookie :: Maybe AuditsAffectedCookie,
auditsCookieIssueDetailsRawCookieLine :: Maybe T.Text,
auditsCookieIssueDetailsCookieWarningReasons :: [AuditsCookieWarningReason],
auditsCookieIssueDetailsCookieExclusionReasons :: [AuditsCookieExclusionReason],
-- | Optionally identifies the site-for-cookies and the cookie url, which
-- may be used by the front-end as additional context.
auditsCookieIssueDetailsOperation :: AuditsCookieOperation,
auditsCookieIssueDetailsSiteForCookies :: Maybe T.Text,
auditsCookieIssueDetailsCookieUrl :: Maybe T.Text,
auditsCookieIssueDetailsRequest :: Maybe AuditsAffectedRequest
}
deriving (Eq, Show)
instance FromJSON AuditsCookieIssueDetails where
parseJSON = A.withObject "AuditsCookieIssueDetails" $ \o -> AuditsCookieIssueDetails
<$> o A..:? "cookie"
<*> o A..:? "rawCookieLine"
<*> o A..: "cookieWarningReasons"
<*> o A..: "cookieExclusionReasons"
<*> o A..: "operation"
<*> o A..:? "siteForCookies"
<*> o A..:? "cookieUrl"
<*> o A..:? "request"
instance ToJSON AuditsCookieIssueDetails where
toJSON p = A.object $ catMaybes [
("cookie" A..=) <$> (auditsCookieIssueDetailsCookie p),
("rawCookieLine" A..=) <$> (auditsCookieIssueDetailsRawCookieLine p),
("cookieWarningReasons" A..=) <$> Just (auditsCookieIssueDetailsCookieWarningReasons p),
("cookieExclusionReasons" A..=) <$> Just (auditsCookieIssueDetailsCookieExclusionReasons p),
("operation" A..=) <$> Just (auditsCookieIssueDetailsOperation p),
("siteForCookies" A..=) <$> (auditsCookieIssueDetailsSiteForCookies p),
("cookieUrl" A..=) <$> (auditsCookieIssueDetailsCookieUrl p),
("request" A..=) <$> (auditsCookieIssueDetailsRequest p)
]
-- | Type 'Audits.MixedContentResolutionStatus'.
data AuditsMixedContentResolutionStatus = AuditsMixedContentResolutionStatusMixedContentBlocked | AuditsMixedContentResolutionStatusMixedContentAutomaticallyUpgraded | AuditsMixedContentResolutionStatusMixedContentWarning
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsMixedContentResolutionStatus where
parseJSON = A.withText "AuditsMixedContentResolutionStatus" $ \v -> case v of
"MixedContentBlocked" -> pure AuditsMixedContentResolutionStatusMixedContentBlocked
"MixedContentAutomaticallyUpgraded" -> pure AuditsMixedContentResolutionStatusMixedContentAutomaticallyUpgraded
"MixedContentWarning" -> pure AuditsMixedContentResolutionStatusMixedContentWarning
"_" -> fail "failed to parse AuditsMixedContentResolutionStatus"
instance ToJSON AuditsMixedContentResolutionStatus where
toJSON v = A.String $ case v of
AuditsMixedContentResolutionStatusMixedContentBlocked -> "MixedContentBlocked"
AuditsMixedContentResolutionStatusMixedContentAutomaticallyUpgraded -> "MixedContentAutomaticallyUpgraded"
AuditsMixedContentResolutionStatusMixedContentWarning -> "MixedContentWarning"
-- | Type 'Audits.MixedContentResourceType'.
data AuditsMixedContentResourceType = AuditsMixedContentResourceTypeAttributionSrc | AuditsMixedContentResourceTypeAudio | AuditsMixedContentResourceTypeBeacon | AuditsMixedContentResourceTypeCSPReport | AuditsMixedContentResourceTypeDownload | AuditsMixedContentResourceTypeEventSource | AuditsMixedContentResourceTypeFavicon | AuditsMixedContentResourceTypeFont | AuditsMixedContentResourceTypeForm | AuditsMixedContentResourceTypeFrame | AuditsMixedContentResourceTypeImage | AuditsMixedContentResourceTypeImport | AuditsMixedContentResourceTypeManifest | AuditsMixedContentResourceTypePing | AuditsMixedContentResourceTypePluginData | AuditsMixedContentResourceTypePluginResource | AuditsMixedContentResourceTypePrefetch | AuditsMixedContentResourceTypeResource | AuditsMixedContentResourceTypeScript | AuditsMixedContentResourceTypeServiceWorker | AuditsMixedContentResourceTypeSharedWorker | AuditsMixedContentResourceTypeStylesheet | AuditsMixedContentResourceTypeTrack | AuditsMixedContentResourceTypeVideo | AuditsMixedContentResourceTypeWorker | AuditsMixedContentResourceTypeXMLHttpRequest | AuditsMixedContentResourceTypeXSLT
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsMixedContentResourceType where
parseJSON = A.withText "AuditsMixedContentResourceType" $ \v -> case v of
"AttributionSrc" -> pure AuditsMixedContentResourceTypeAttributionSrc
"Audio" -> pure AuditsMixedContentResourceTypeAudio
"Beacon" -> pure AuditsMixedContentResourceTypeBeacon
"CSPReport" -> pure AuditsMixedContentResourceTypeCSPReport
"Download" -> pure AuditsMixedContentResourceTypeDownload
"EventSource" -> pure AuditsMixedContentResourceTypeEventSource
"Favicon" -> pure AuditsMixedContentResourceTypeFavicon
"Font" -> pure AuditsMixedContentResourceTypeFont
"Form" -> pure AuditsMixedContentResourceTypeForm
"Frame" -> pure AuditsMixedContentResourceTypeFrame
"Image" -> pure AuditsMixedContentResourceTypeImage
"Import" -> pure AuditsMixedContentResourceTypeImport
"Manifest" -> pure AuditsMixedContentResourceTypeManifest
"Ping" -> pure AuditsMixedContentResourceTypePing
"PluginData" -> pure AuditsMixedContentResourceTypePluginData
"PluginResource" -> pure AuditsMixedContentResourceTypePluginResource
"Prefetch" -> pure AuditsMixedContentResourceTypePrefetch
"Resource" -> pure AuditsMixedContentResourceTypeResource
"Script" -> pure AuditsMixedContentResourceTypeScript
"ServiceWorker" -> pure AuditsMixedContentResourceTypeServiceWorker
"SharedWorker" -> pure AuditsMixedContentResourceTypeSharedWorker
"Stylesheet" -> pure AuditsMixedContentResourceTypeStylesheet
"Track" -> pure AuditsMixedContentResourceTypeTrack
"Video" -> pure AuditsMixedContentResourceTypeVideo
"Worker" -> pure AuditsMixedContentResourceTypeWorker
"XMLHttpRequest" -> pure AuditsMixedContentResourceTypeXMLHttpRequest
"XSLT" -> pure AuditsMixedContentResourceTypeXSLT
"_" -> fail "failed to parse AuditsMixedContentResourceType"
instance ToJSON AuditsMixedContentResourceType where
toJSON v = A.String $ case v of
AuditsMixedContentResourceTypeAttributionSrc -> "AttributionSrc"
AuditsMixedContentResourceTypeAudio -> "Audio"
AuditsMixedContentResourceTypeBeacon -> "Beacon"
AuditsMixedContentResourceTypeCSPReport -> "CSPReport"
AuditsMixedContentResourceTypeDownload -> "Download"
AuditsMixedContentResourceTypeEventSource -> "EventSource"
AuditsMixedContentResourceTypeFavicon -> "Favicon"
AuditsMixedContentResourceTypeFont -> "Font"
AuditsMixedContentResourceTypeForm -> "Form"
AuditsMixedContentResourceTypeFrame -> "Frame"
AuditsMixedContentResourceTypeImage -> "Image"
AuditsMixedContentResourceTypeImport -> "Import"
AuditsMixedContentResourceTypeManifest -> "Manifest"
AuditsMixedContentResourceTypePing -> "Ping"
AuditsMixedContentResourceTypePluginData -> "PluginData"
AuditsMixedContentResourceTypePluginResource -> "PluginResource"
AuditsMixedContentResourceTypePrefetch -> "Prefetch"
AuditsMixedContentResourceTypeResource -> "Resource"
AuditsMixedContentResourceTypeScript -> "Script"
AuditsMixedContentResourceTypeServiceWorker -> "ServiceWorker"
AuditsMixedContentResourceTypeSharedWorker -> "SharedWorker"
AuditsMixedContentResourceTypeStylesheet -> "Stylesheet"
AuditsMixedContentResourceTypeTrack -> "Track"
AuditsMixedContentResourceTypeVideo -> "Video"
AuditsMixedContentResourceTypeWorker -> "Worker"
AuditsMixedContentResourceTypeXMLHttpRequest -> "XMLHttpRequest"
AuditsMixedContentResourceTypeXSLT -> "XSLT"
-- | Type 'Audits.MixedContentIssueDetails'.
data AuditsMixedContentIssueDetails = AuditsMixedContentIssueDetails
{
-- | The type of resource causing the mixed content issue (css, js, iframe,
-- form,...). Marked as optional because it is mapped to from
-- blink::mojom::RequestContextType, which will be replaced
-- by network::mojom::RequestDestination
auditsMixedContentIssueDetailsResourceType :: Maybe AuditsMixedContentResourceType,
-- | The way the mixed content issue is being resolved.
auditsMixedContentIssueDetailsResolutionStatus :: AuditsMixedContentResolutionStatus,
-- | The unsafe http url causing the mixed content issue.
auditsMixedContentIssueDetailsInsecureURL :: T.Text,
-- | The url responsible for the call to an unsafe url.
auditsMixedContentIssueDetailsMainResourceURL :: T.Text,
-- | The mixed content request.
-- Does not always exist (e.g. for unsafe form submission urls).
auditsMixedContentIssueDetailsRequest :: Maybe AuditsAffectedRequest,
-- | Optional because not every mixed content issue is necessarily linked to a frame.
auditsMixedContentIssueDetailsFrame :: Maybe AuditsAffectedFrame
}
deriving (Eq, Show)
instance FromJSON AuditsMixedContentIssueDetails where
parseJSON = A.withObject "AuditsMixedContentIssueDetails" $ \o -> AuditsMixedContentIssueDetails
<$> o A..:? "resourceType"
<*> o A..: "resolutionStatus"
<*> o A..: "insecureURL"
<*> o A..: "mainResourceURL"
<*> o A..:? "request"
<*> o A..:? "frame"
instance ToJSON AuditsMixedContentIssueDetails where
toJSON p = A.object $ catMaybes [
("resourceType" A..=) <$> (auditsMixedContentIssueDetailsResourceType p),
("resolutionStatus" A..=) <$> Just (auditsMixedContentIssueDetailsResolutionStatus p),
("insecureURL" A..=) <$> Just (auditsMixedContentIssueDetailsInsecureURL p),
("mainResourceURL" A..=) <$> Just (auditsMixedContentIssueDetailsMainResourceURL p),
("request" A..=) <$> (auditsMixedContentIssueDetailsRequest p),
("frame" A..=) <$> (auditsMixedContentIssueDetailsFrame p)
]
-- | Type 'Audits.BlockedByResponseReason'.
-- Enum indicating the reason a response has been blocked. These reasons are
-- refinements of the net error BLOCKED_BY_RESPONSE.
data AuditsBlockedByResponseReason = AuditsBlockedByResponseReasonCoepFrameResourceNeedsCoepHeader | AuditsBlockedByResponseReasonCoopSandboxedIFrameCannotNavigateToCoopPage | AuditsBlockedByResponseReasonCorpNotSameOrigin | AuditsBlockedByResponseReasonCorpNotSameOriginAfterDefaultedToSameOriginByCoep | AuditsBlockedByResponseReasonCorpNotSameSite
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsBlockedByResponseReason where
parseJSON = A.withText "AuditsBlockedByResponseReason" $ \v -> case v of
"CoepFrameResourceNeedsCoepHeader" -> pure AuditsBlockedByResponseReasonCoepFrameResourceNeedsCoepHeader
"CoopSandboxedIFrameCannotNavigateToCoopPage" -> pure AuditsBlockedByResponseReasonCoopSandboxedIFrameCannotNavigateToCoopPage
"CorpNotSameOrigin" -> pure AuditsBlockedByResponseReasonCorpNotSameOrigin
"CorpNotSameOriginAfterDefaultedToSameOriginByCoep" -> pure AuditsBlockedByResponseReasonCorpNotSameOriginAfterDefaultedToSameOriginByCoep
"CorpNotSameSite" -> pure AuditsBlockedByResponseReasonCorpNotSameSite
"_" -> fail "failed to parse AuditsBlockedByResponseReason"
instance ToJSON AuditsBlockedByResponseReason where
toJSON v = A.String $ case v of
AuditsBlockedByResponseReasonCoepFrameResourceNeedsCoepHeader -> "CoepFrameResourceNeedsCoepHeader"
AuditsBlockedByResponseReasonCoopSandboxedIFrameCannotNavigateToCoopPage -> "CoopSandboxedIFrameCannotNavigateToCoopPage"
AuditsBlockedByResponseReasonCorpNotSameOrigin -> "CorpNotSameOrigin"
AuditsBlockedByResponseReasonCorpNotSameOriginAfterDefaultedToSameOriginByCoep -> "CorpNotSameOriginAfterDefaultedToSameOriginByCoep"
AuditsBlockedByResponseReasonCorpNotSameSite -> "CorpNotSameSite"
-- | Type 'Audits.BlockedByResponseIssueDetails'.
-- Details for a request that has been blocked with the BLOCKED_BY_RESPONSE
-- code. Currently only used for COEP/COOP, but may be extended to include
-- some CSP errors in the future.
data AuditsBlockedByResponseIssueDetails = AuditsBlockedByResponseIssueDetails
{
auditsBlockedByResponseIssueDetailsRequest :: AuditsAffectedRequest,
auditsBlockedByResponseIssueDetailsParentFrame :: Maybe AuditsAffectedFrame,
auditsBlockedByResponseIssueDetailsBlockedFrame :: Maybe AuditsAffectedFrame,
auditsBlockedByResponseIssueDetailsReason :: AuditsBlockedByResponseReason
}
deriving (Eq, Show)
instance FromJSON AuditsBlockedByResponseIssueDetails where
parseJSON = A.withObject "AuditsBlockedByResponseIssueDetails" $ \o -> AuditsBlockedByResponseIssueDetails
<$> o A..: "request"
<*> o A..:? "parentFrame"
<*> o A..:? "blockedFrame"
<*> o A..: "reason"
instance ToJSON AuditsBlockedByResponseIssueDetails where
toJSON p = A.object $ catMaybes [
("request" A..=) <$> Just (auditsBlockedByResponseIssueDetailsRequest p),
("parentFrame" A..=) <$> (auditsBlockedByResponseIssueDetailsParentFrame p),
("blockedFrame" A..=) <$> (auditsBlockedByResponseIssueDetailsBlockedFrame p),
("reason" A..=) <$> Just (auditsBlockedByResponseIssueDetailsReason p)
]
-- | Type 'Audits.HeavyAdResolutionStatus'.
data AuditsHeavyAdResolutionStatus = AuditsHeavyAdResolutionStatusHeavyAdBlocked | AuditsHeavyAdResolutionStatusHeavyAdWarning
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsHeavyAdResolutionStatus where
parseJSON = A.withText "AuditsHeavyAdResolutionStatus" $ \v -> case v of
"HeavyAdBlocked" -> pure AuditsHeavyAdResolutionStatusHeavyAdBlocked
"HeavyAdWarning" -> pure AuditsHeavyAdResolutionStatusHeavyAdWarning
"_" -> fail "failed to parse AuditsHeavyAdResolutionStatus"
instance ToJSON AuditsHeavyAdResolutionStatus where
toJSON v = A.String $ case v of
AuditsHeavyAdResolutionStatusHeavyAdBlocked -> "HeavyAdBlocked"
AuditsHeavyAdResolutionStatusHeavyAdWarning -> "HeavyAdWarning"
-- | Type 'Audits.HeavyAdReason'.
data AuditsHeavyAdReason = AuditsHeavyAdReasonNetworkTotalLimit | AuditsHeavyAdReasonCpuTotalLimit | AuditsHeavyAdReasonCpuPeakLimit
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsHeavyAdReason where
parseJSON = A.withText "AuditsHeavyAdReason" $ \v -> case v of
"NetworkTotalLimit" -> pure AuditsHeavyAdReasonNetworkTotalLimit
"CpuTotalLimit" -> pure AuditsHeavyAdReasonCpuTotalLimit
"CpuPeakLimit" -> pure AuditsHeavyAdReasonCpuPeakLimit
"_" -> fail "failed to parse AuditsHeavyAdReason"
instance ToJSON AuditsHeavyAdReason where
toJSON v = A.String $ case v of
AuditsHeavyAdReasonNetworkTotalLimit -> "NetworkTotalLimit"
AuditsHeavyAdReasonCpuTotalLimit -> "CpuTotalLimit"
AuditsHeavyAdReasonCpuPeakLimit -> "CpuPeakLimit"
-- | Type 'Audits.HeavyAdIssueDetails'.
data AuditsHeavyAdIssueDetails = AuditsHeavyAdIssueDetails
{
-- | The resolution status, either blocking the content or warning.
auditsHeavyAdIssueDetailsResolution :: AuditsHeavyAdResolutionStatus,
-- | The reason the ad was blocked, total network or cpu or peak cpu.
auditsHeavyAdIssueDetailsReason :: AuditsHeavyAdReason,
-- | The frame that was blocked.
auditsHeavyAdIssueDetailsFrame :: AuditsAffectedFrame
}
deriving (Eq, Show)
instance FromJSON AuditsHeavyAdIssueDetails where
parseJSON = A.withObject "AuditsHeavyAdIssueDetails" $ \o -> AuditsHeavyAdIssueDetails
<$> o A..: "resolution"
<*> o A..: "reason"
<*> o A..: "frame"
instance ToJSON AuditsHeavyAdIssueDetails where
toJSON p = A.object $ catMaybes [
("resolution" A..=) <$> Just (auditsHeavyAdIssueDetailsResolution p),
("reason" A..=) <$> Just (auditsHeavyAdIssueDetailsReason p),
("frame" A..=) <$> Just (auditsHeavyAdIssueDetailsFrame p)
]
-- | Type 'Audits.ContentSecurityPolicyViolationType'.
data AuditsContentSecurityPolicyViolationType = AuditsContentSecurityPolicyViolationTypeKInlineViolation | AuditsContentSecurityPolicyViolationTypeKEvalViolation | AuditsContentSecurityPolicyViolationTypeKURLViolation | AuditsContentSecurityPolicyViolationTypeKTrustedTypesSinkViolation | AuditsContentSecurityPolicyViolationTypeKTrustedTypesPolicyViolation | AuditsContentSecurityPolicyViolationTypeKWasmEvalViolation
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsContentSecurityPolicyViolationType where
parseJSON = A.withText "AuditsContentSecurityPolicyViolationType" $ \v -> case v of
"kInlineViolation" -> pure AuditsContentSecurityPolicyViolationTypeKInlineViolation
"kEvalViolation" -> pure AuditsContentSecurityPolicyViolationTypeKEvalViolation
"kURLViolation" -> pure AuditsContentSecurityPolicyViolationTypeKURLViolation
"kTrustedTypesSinkViolation" -> pure AuditsContentSecurityPolicyViolationTypeKTrustedTypesSinkViolation
"kTrustedTypesPolicyViolation" -> pure AuditsContentSecurityPolicyViolationTypeKTrustedTypesPolicyViolation
"kWasmEvalViolation" -> pure AuditsContentSecurityPolicyViolationTypeKWasmEvalViolation
"_" -> fail "failed to parse AuditsContentSecurityPolicyViolationType"
instance ToJSON AuditsContentSecurityPolicyViolationType where
toJSON v = A.String $ case v of
AuditsContentSecurityPolicyViolationTypeKInlineViolation -> "kInlineViolation"
AuditsContentSecurityPolicyViolationTypeKEvalViolation -> "kEvalViolation"
AuditsContentSecurityPolicyViolationTypeKURLViolation -> "kURLViolation"
AuditsContentSecurityPolicyViolationTypeKTrustedTypesSinkViolation -> "kTrustedTypesSinkViolation"
AuditsContentSecurityPolicyViolationTypeKTrustedTypesPolicyViolation -> "kTrustedTypesPolicyViolation"
AuditsContentSecurityPolicyViolationTypeKWasmEvalViolation -> "kWasmEvalViolation"
-- | Type 'Audits.SourceCodeLocation'.
data AuditsSourceCodeLocation = AuditsSourceCodeLocation
{
auditsSourceCodeLocationScriptId :: Maybe Runtime.RuntimeScriptId,
auditsSourceCodeLocationUrl :: T.Text,
auditsSourceCodeLocationLineNumber :: Int,
auditsSourceCodeLocationColumnNumber :: Int
}
deriving (Eq, Show)
instance FromJSON AuditsSourceCodeLocation where
parseJSON = A.withObject "AuditsSourceCodeLocation" $ \o -> AuditsSourceCodeLocation
<$> o A..:? "scriptId"
<*> o A..: "url"
<*> o A..: "lineNumber"
<*> o A..: "columnNumber"
instance ToJSON AuditsSourceCodeLocation where
toJSON p = A.object $ catMaybes [
("scriptId" A..=) <$> (auditsSourceCodeLocationScriptId p),
("url" A..=) <$> Just (auditsSourceCodeLocationUrl p),
("lineNumber" A..=) <$> Just (auditsSourceCodeLocationLineNumber p),
("columnNumber" A..=) <$> Just (auditsSourceCodeLocationColumnNumber p)
]
-- | Type 'Audits.ContentSecurityPolicyIssueDetails'.
data AuditsContentSecurityPolicyIssueDetails = AuditsContentSecurityPolicyIssueDetails
{
-- | The url not included in allowed sources.
auditsContentSecurityPolicyIssueDetailsBlockedURL :: Maybe T.Text,
-- | Specific directive that is violated, causing the CSP issue.
auditsContentSecurityPolicyIssueDetailsViolatedDirective :: T.Text,
auditsContentSecurityPolicyIssueDetailsIsReportOnly :: Bool,
auditsContentSecurityPolicyIssueDetailsContentSecurityPolicyViolationType :: AuditsContentSecurityPolicyViolationType,
auditsContentSecurityPolicyIssueDetailsFrameAncestor :: Maybe AuditsAffectedFrame,
auditsContentSecurityPolicyIssueDetailsSourceCodeLocation :: Maybe AuditsSourceCodeLocation,
auditsContentSecurityPolicyIssueDetailsViolatingNodeId :: Maybe DOMPageNetworkEmulationSecurity.DOMBackendNodeId
}
deriving (Eq, Show)
instance FromJSON AuditsContentSecurityPolicyIssueDetails where
parseJSON = A.withObject "AuditsContentSecurityPolicyIssueDetails" $ \o -> AuditsContentSecurityPolicyIssueDetails
<$> o A..:? "blockedURL"
<*> o A..: "violatedDirective"
<*> o A..: "isReportOnly"
<*> o A..: "contentSecurityPolicyViolationType"
<*> o A..:? "frameAncestor"
<*> o A..:? "sourceCodeLocation"
<*> o A..:? "violatingNodeId"
instance ToJSON AuditsContentSecurityPolicyIssueDetails where
toJSON p = A.object $ catMaybes [
("blockedURL" A..=) <$> (auditsContentSecurityPolicyIssueDetailsBlockedURL p),
("violatedDirective" A..=) <$> Just (auditsContentSecurityPolicyIssueDetailsViolatedDirective p),
("isReportOnly" A..=) <$> Just (auditsContentSecurityPolicyIssueDetailsIsReportOnly p),
("contentSecurityPolicyViolationType" A..=) <$> Just (auditsContentSecurityPolicyIssueDetailsContentSecurityPolicyViolationType p),
("frameAncestor" A..=) <$> (auditsContentSecurityPolicyIssueDetailsFrameAncestor p),
("sourceCodeLocation" A..=) <$> (auditsContentSecurityPolicyIssueDetailsSourceCodeLocation p),
("violatingNodeId" A..=) <$> (auditsContentSecurityPolicyIssueDetailsViolatingNodeId p)
]
-- | Type 'Audits.SharedArrayBufferIssueType'.
data AuditsSharedArrayBufferIssueType = AuditsSharedArrayBufferIssueTypeTransferIssue | AuditsSharedArrayBufferIssueTypeCreationIssue
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsSharedArrayBufferIssueType where
parseJSON = A.withText "AuditsSharedArrayBufferIssueType" $ \v -> case v of
"TransferIssue" -> pure AuditsSharedArrayBufferIssueTypeTransferIssue
"CreationIssue" -> pure AuditsSharedArrayBufferIssueTypeCreationIssue
"_" -> fail "failed to parse AuditsSharedArrayBufferIssueType"
instance ToJSON AuditsSharedArrayBufferIssueType where
toJSON v = A.String $ case v of
AuditsSharedArrayBufferIssueTypeTransferIssue -> "TransferIssue"
AuditsSharedArrayBufferIssueTypeCreationIssue -> "CreationIssue"
-- | Type 'Audits.SharedArrayBufferIssueDetails'.
-- Details for a issue arising from an SAB being instantiated in, or
-- transferred to a context that is not cross-origin isolated.
data AuditsSharedArrayBufferIssueDetails = AuditsSharedArrayBufferIssueDetails
{
auditsSharedArrayBufferIssueDetailsSourceCodeLocation :: AuditsSourceCodeLocation,
auditsSharedArrayBufferIssueDetailsIsWarning :: Bool,
auditsSharedArrayBufferIssueDetailsType :: AuditsSharedArrayBufferIssueType
}
deriving (Eq, Show)
instance FromJSON AuditsSharedArrayBufferIssueDetails where
parseJSON = A.withObject "AuditsSharedArrayBufferIssueDetails" $ \o -> AuditsSharedArrayBufferIssueDetails
<$> o A..: "sourceCodeLocation"
<*> o A..: "isWarning"
<*> o A..: "type"
instance ToJSON AuditsSharedArrayBufferIssueDetails where
toJSON p = A.object $ catMaybes [
("sourceCodeLocation" A..=) <$> Just (auditsSharedArrayBufferIssueDetailsSourceCodeLocation p),
("isWarning" A..=) <$> Just (auditsSharedArrayBufferIssueDetailsIsWarning p),
("type" A..=) <$> Just (auditsSharedArrayBufferIssueDetailsType p)
]
-- | Type 'Audits.TwaQualityEnforcementViolationType'.
data AuditsTwaQualityEnforcementViolationType = AuditsTwaQualityEnforcementViolationTypeKHttpError | AuditsTwaQualityEnforcementViolationTypeKUnavailableOffline | AuditsTwaQualityEnforcementViolationTypeKDigitalAssetLinks
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsTwaQualityEnforcementViolationType where
parseJSON = A.withText "AuditsTwaQualityEnforcementViolationType" $ \v -> case v of
"kHttpError" -> pure AuditsTwaQualityEnforcementViolationTypeKHttpError
"kUnavailableOffline" -> pure AuditsTwaQualityEnforcementViolationTypeKUnavailableOffline
"kDigitalAssetLinks" -> pure AuditsTwaQualityEnforcementViolationTypeKDigitalAssetLinks
"_" -> fail "failed to parse AuditsTwaQualityEnforcementViolationType"
instance ToJSON AuditsTwaQualityEnforcementViolationType where
toJSON v = A.String $ case v of
AuditsTwaQualityEnforcementViolationTypeKHttpError -> "kHttpError"
AuditsTwaQualityEnforcementViolationTypeKUnavailableOffline -> "kUnavailableOffline"
AuditsTwaQualityEnforcementViolationTypeKDigitalAssetLinks -> "kDigitalAssetLinks"
-- | Type 'Audits.TrustedWebActivityIssueDetails'.
data AuditsTrustedWebActivityIssueDetails = AuditsTrustedWebActivityIssueDetails
{
-- | The url that triggers the violation.
auditsTrustedWebActivityIssueDetailsUrl :: T.Text,
auditsTrustedWebActivityIssueDetailsViolationType :: AuditsTwaQualityEnforcementViolationType,
auditsTrustedWebActivityIssueDetailsHttpStatusCode :: Maybe Int,
-- | The package name of the Trusted Web Activity client app. This field is
-- only used when violation type is kDigitalAssetLinks.
auditsTrustedWebActivityIssueDetailsPackageName :: Maybe T.Text,
-- | The signature of the Trusted Web Activity client app. This field is only
-- used when violation type is kDigitalAssetLinks.
auditsTrustedWebActivityIssueDetailsSignature :: Maybe T.Text
}
deriving (Eq, Show)
instance FromJSON AuditsTrustedWebActivityIssueDetails where
parseJSON = A.withObject "AuditsTrustedWebActivityIssueDetails" $ \o -> AuditsTrustedWebActivityIssueDetails
<$> o A..: "url"
<*> o A..: "violationType"
<*> o A..:? "httpStatusCode"
<*> o A..:? "packageName"
<*> o A..:? "signature"
instance ToJSON AuditsTrustedWebActivityIssueDetails where
toJSON p = A.object $ catMaybes [
("url" A..=) <$> Just (auditsTrustedWebActivityIssueDetailsUrl p),
("violationType" A..=) <$> Just (auditsTrustedWebActivityIssueDetailsViolationType p),
("httpStatusCode" A..=) <$> (auditsTrustedWebActivityIssueDetailsHttpStatusCode p),
("packageName" A..=) <$> (auditsTrustedWebActivityIssueDetailsPackageName p),
("signature" A..=) <$> (auditsTrustedWebActivityIssueDetailsSignature p)
]
-- | Type 'Audits.LowTextContrastIssueDetails'.
data AuditsLowTextContrastIssueDetails = AuditsLowTextContrastIssueDetails
{
auditsLowTextContrastIssueDetailsViolatingNodeId :: DOMPageNetworkEmulationSecurity.DOMBackendNodeId,
auditsLowTextContrastIssueDetailsViolatingNodeSelector :: T.Text,
auditsLowTextContrastIssueDetailsContrastRatio :: Double,
auditsLowTextContrastIssueDetailsThresholdAA :: Double,
auditsLowTextContrastIssueDetailsThresholdAAA :: Double,
auditsLowTextContrastIssueDetailsFontSize :: T.Text,
auditsLowTextContrastIssueDetailsFontWeight :: T.Text
}
deriving (Eq, Show)
instance FromJSON AuditsLowTextContrastIssueDetails where
parseJSON = A.withObject "AuditsLowTextContrastIssueDetails" $ \o -> AuditsLowTextContrastIssueDetails
<$> o A..: "violatingNodeId"
<*> o A..: "violatingNodeSelector"
<*> o A..: "contrastRatio"
<*> o A..: "thresholdAA"
<*> o A..: "thresholdAAA"
<*> o A..: "fontSize"
<*> o A..: "fontWeight"
instance ToJSON AuditsLowTextContrastIssueDetails where
toJSON p = A.object $ catMaybes [
("violatingNodeId" A..=) <$> Just (auditsLowTextContrastIssueDetailsViolatingNodeId p),
("violatingNodeSelector" A..=) <$> Just (auditsLowTextContrastIssueDetailsViolatingNodeSelector p),
("contrastRatio" A..=) <$> Just (auditsLowTextContrastIssueDetailsContrastRatio p),
("thresholdAA" A..=) <$> Just (auditsLowTextContrastIssueDetailsThresholdAA p),
("thresholdAAA" A..=) <$> Just (auditsLowTextContrastIssueDetailsThresholdAAA p),
("fontSize" A..=) <$> Just (auditsLowTextContrastIssueDetailsFontSize p),
("fontWeight" A..=) <$> Just (auditsLowTextContrastIssueDetailsFontWeight p)
]
-- | Type 'Audits.CorsIssueDetails'.
-- Details for a CORS related issue, e.g. a warning or error related to
-- CORS RFC1918 enforcement.
data AuditsCorsIssueDetails = AuditsCorsIssueDetails
{
auditsCorsIssueDetailsCorsErrorStatus :: DOMPageNetworkEmulationSecurity.NetworkCorsErrorStatus,
auditsCorsIssueDetailsIsWarning :: Bool,
auditsCorsIssueDetailsRequest :: AuditsAffectedRequest,
auditsCorsIssueDetailsLocation :: Maybe AuditsSourceCodeLocation,
auditsCorsIssueDetailsInitiatorOrigin :: Maybe T.Text,
auditsCorsIssueDetailsResourceIPAddressSpace :: Maybe DOMPageNetworkEmulationSecurity.NetworkIPAddressSpace,
auditsCorsIssueDetailsClientSecurityState :: Maybe DOMPageNetworkEmulationSecurity.NetworkClientSecurityState
}
deriving (Eq, Show)
instance FromJSON AuditsCorsIssueDetails where
parseJSON = A.withObject "AuditsCorsIssueDetails" $ \o -> AuditsCorsIssueDetails
<$> o A..: "corsErrorStatus"
<*> o A..: "isWarning"
<*> o A..: "request"
<*> o A..:? "location"
<*> o A..:? "initiatorOrigin"
<*> o A..:? "resourceIPAddressSpace"
<*> o A..:? "clientSecurityState"
instance ToJSON AuditsCorsIssueDetails where
toJSON p = A.object $ catMaybes [
("corsErrorStatus" A..=) <$> Just (auditsCorsIssueDetailsCorsErrorStatus p),
("isWarning" A..=) <$> Just (auditsCorsIssueDetailsIsWarning p),
("request" A..=) <$> Just (auditsCorsIssueDetailsRequest p),
("location" A..=) <$> (auditsCorsIssueDetailsLocation p),
("initiatorOrigin" A..=) <$> (auditsCorsIssueDetailsInitiatorOrigin p),
("resourceIPAddressSpace" A..=) <$> (auditsCorsIssueDetailsResourceIPAddressSpace p),
("clientSecurityState" A..=) <$> (auditsCorsIssueDetailsClientSecurityState p)
]
-- | Type 'Audits.AttributionReportingIssueType'.
data AuditsAttributionReportingIssueType = AuditsAttributionReportingIssueTypePermissionPolicyDisabled | AuditsAttributionReportingIssueTypePermissionPolicyNotDelegated | AuditsAttributionReportingIssueTypeUntrustworthyReportingOrigin | AuditsAttributionReportingIssueTypeInsecureContext | AuditsAttributionReportingIssueTypeInvalidHeader | AuditsAttributionReportingIssueTypeInvalidRegisterTriggerHeader | AuditsAttributionReportingIssueTypeInvalidEligibleHeader | AuditsAttributionReportingIssueTypeTooManyConcurrentRequests | AuditsAttributionReportingIssueTypeSourceAndTriggerHeaders | AuditsAttributionReportingIssueTypeSourceIgnored | AuditsAttributionReportingIssueTypeTriggerIgnored
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsAttributionReportingIssueType where
parseJSON = A.withText "AuditsAttributionReportingIssueType" $ \v -> case v of
"PermissionPolicyDisabled" -> pure AuditsAttributionReportingIssueTypePermissionPolicyDisabled
"PermissionPolicyNotDelegated" -> pure AuditsAttributionReportingIssueTypePermissionPolicyNotDelegated
"UntrustworthyReportingOrigin" -> pure AuditsAttributionReportingIssueTypeUntrustworthyReportingOrigin
"InsecureContext" -> pure AuditsAttributionReportingIssueTypeInsecureContext
"InvalidHeader" -> pure AuditsAttributionReportingIssueTypeInvalidHeader
"InvalidRegisterTriggerHeader" -> pure AuditsAttributionReportingIssueTypeInvalidRegisterTriggerHeader
"InvalidEligibleHeader" -> pure AuditsAttributionReportingIssueTypeInvalidEligibleHeader
"TooManyConcurrentRequests" -> pure AuditsAttributionReportingIssueTypeTooManyConcurrentRequests
"SourceAndTriggerHeaders" -> pure AuditsAttributionReportingIssueTypeSourceAndTriggerHeaders
"SourceIgnored" -> pure AuditsAttributionReportingIssueTypeSourceIgnored
"TriggerIgnored" -> pure AuditsAttributionReportingIssueTypeTriggerIgnored
"_" -> fail "failed to parse AuditsAttributionReportingIssueType"
instance ToJSON AuditsAttributionReportingIssueType where
toJSON v = A.String $ case v of
AuditsAttributionReportingIssueTypePermissionPolicyDisabled -> "PermissionPolicyDisabled"
AuditsAttributionReportingIssueTypePermissionPolicyNotDelegated -> "PermissionPolicyNotDelegated"
AuditsAttributionReportingIssueTypeUntrustworthyReportingOrigin -> "UntrustworthyReportingOrigin"
AuditsAttributionReportingIssueTypeInsecureContext -> "InsecureContext"
AuditsAttributionReportingIssueTypeInvalidHeader -> "InvalidHeader"
AuditsAttributionReportingIssueTypeInvalidRegisterTriggerHeader -> "InvalidRegisterTriggerHeader"
AuditsAttributionReportingIssueTypeInvalidEligibleHeader -> "InvalidEligibleHeader"
AuditsAttributionReportingIssueTypeTooManyConcurrentRequests -> "TooManyConcurrentRequests"
AuditsAttributionReportingIssueTypeSourceAndTriggerHeaders -> "SourceAndTriggerHeaders"
AuditsAttributionReportingIssueTypeSourceIgnored -> "SourceIgnored"
AuditsAttributionReportingIssueTypeTriggerIgnored -> "TriggerIgnored"
-- | Type 'Audits.AttributionReportingIssueDetails'.
-- Details for issues around "Attribution Reporting API" usage.
-- Explainer: https://github.com/WICG/attribution-reporting-api
data AuditsAttributionReportingIssueDetails = AuditsAttributionReportingIssueDetails
{
auditsAttributionReportingIssueDetailsViolationType :: AuditsAttributionReportingIssueType,
auditsAttributionReportingIssueDetailsRequest :: Maybe AuditsAffectedRequest,
auditsAttributionReportingIssueDetailsViolatingNodeId :: Maybe DOMPageNetworkEmulationSecurity.DOMBackendNodeId,
auditsAttributionReportingIssueDetailsInvalidParameter :: Maybe T.Text
}
deriving (Eq, Show)
instance FromJSON AuditsAttributionReportingIssueDetails where
parseJSON = A.withObject "AuditsAttributionReportingIssueDetails" $ \o -> AuditsAttributionReportingIssueDetails
<$> o A..: "violationType"
<*> o A..:? "request"
<*> o A..:? "violatingNodeId"
<*> o A..:? "invalidParameter"
instance ToJSON AuditsAttributionReportingIssueDetails where
toJSON p = A.object $ catMaybes [
("violationType" A..=) <$> Just (auditsAttributionReportingIssueDetailsViolationType p),
("request" A..=) <$> (auditsAttributionReportingIssueDetailsRequest p),
("violatingNodeId" A..=) <$> (auditsAttributionReportingIssueDetailsViolatingNodeId p),
("invalidParameter" A..=) <$> (auditsAttributionReportingIssueDetailsInvalidParameter p)
]
-- | Type 'Audits.QuirksModeIssueDetails'.
-- Details for issues about documents in Quirks Mode
-- or Limited Quirks Mode that affects page layouting.
data AuditsQuirksModeIssueDetails = AuditsQuirksModeIssueDetails
{
-- | If false, it means the document's mode is "quirks"
-- instead of "limited-quirks".
auditsQuirksModeIssueDetailsIsLimitedQuirksMode :: Bool,
auditsQuirksModeIssueDetailsDocumentNodeId :: DOMPageNetworkEmulationSecurity.DOMBackendNodeId,
auditsQuirksModeIssueDetailsUrl :: T.Text,
auditsQuirksModeIssueDetailsFrameId :: DOMPageNetworkEmulationSecurity.PageFrameId,
auditsQuirksModeIssueDetailsLoaderId :: DOMPageNetworkEmulationSecurity.NetworkLoaderId
}
deriving (Eq, Show)
instance FromJSON AuditsQuirksModeIssueDetails where
parseJSON = A.withObject "AuditsQuirksModeIssueDetails" $ \o -> AuditsQuirksModeIssueDetails
<$> o A..: "isLimitedQuirksMode"
<*> o A..: "documentNodeId"
<*> o A..: "url"
<*> o A..: "frameId"
<*> o A..: "loaderId"
instance ToJSON AuditsQuirksModeIssueDetails where
toJSON p = A.object $ catMaybes [
("isLimitedQuirksMode" A..=) <$> Just (auditsQuirksModeIssueDetailsIsLimitedQuirksMode p),
("documentNodeId" A..=) <$> Just (auditsQuirksModeIssueDetailsDocumentNodeId p),
("url" A..=) <$> Just (auditsQuirksModeIssueDetailsUrl p),
("frameId" A..=) <$> Just (auditsQuirksModeIssueDetailsFrameId p),
("loaderId" A..=) <$> Just (auditsQuirksModeIssueDetailsLoaderId p)
]
-- | Type 'Audits.NavigatorUserAgentIssueDetails'.
data AuditsNavigatorUserAgentIssueDetails = AuditsNavigatorUserAgentIssueDetails
{
auditsNavigatorUserAgentIssueDetailsUrl :: T.Text,
auditsNavigatorUserAgentIssueDetailsLocation :: Maybe AuditsSourceCodeLocation
}
deriving (Eq, Show)
instance FromJSON AuditsNavigatorUserAgentIssueDetails where
parseJSON = A.withObject "AuditsNavigatorUserAgentIssueDetails" $ \o -> AuditsNavigatorUserAgentIssueDetails
<$> o A..: "url"
<*> o A..:? "location"
instance ToJSON AuditsNavigatorUserAgentIssueDetails where
toJSON p = A.object $ catMaybes [
("url" A..=) <$> Just (auditsNavigatorUserAgentIssueDetailsUrl p),
("location" A..=) <$> (auditsNavigatorUserAgentIssueDetailsLocation p)
]
-- | Type 'Audits.GenericIssueErrorType'.
data AuditsGenericIssueErrorType = AuditsGenericIssueErrorTypeCrossOriginPortalPostMessageError
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsGenericIssueErrorType where
parseJSON = A.withText "AuditsGenericIssueErrorType" $ \v -> case v of
"CrossOriginPortalPostMessageError" -> pure AuditsGenericIssueErrorTypeCrossOriginPortalPostMessageError
"_" -> fail "failed to parse AuditsGenericIssueErrorType"
instance ToJSON AuditsGenericIssueErrorType where
toJSON v = A.String $ case v of
AuditsGenericIssueErrorTypeCrossOriginPortalPostMessageError -> "CrossOriginPortalPostMessageError"
-- | Type 'Audits.GenericIssueDetails'.
-- Depending on the concrete errorType, different properties are set.
data AuditsGenericIssueDetails = AuditsGenericIssueDetails
{
-- | Issues with the same errorType are aggregated in the frontend.
auditsGenericIssueDetailsErrorType :: AuditsGenericIssueErrorType,
auditsGenericIssueDetailsFrameId :: Maybe DOMPageNetworkEmulationSecurity.PageFrameId
}
deriving (Eq, Show)
instance FromJSON AuditsGenericIssueDetails where
parseJSON = A.withObject "AuditsGenericIssueDetails" $ \o -> AuditsGenericIssueDetails
<$> o A..: "errorType"
<*> o A..:? "frameId"
instance ToJSON AuditsGenericIssueDetails where
toJSON p = A.object $ catMaybes [
("errorType" A..=) <$> Just (auditsGenericIssueDetailsErrorType p),
("frameId" A..=) <$> (auditsGenericIssueDetailsFrameId p)
]
-- | Type 'Audits.DeprecationIssueType'.
data AuditsDeprecationIssueType = AuditsDeprecationIssueTypeAuthorizationCoveredByWildcard | AuditsDeprecationIssueTypeCanRequestURLHTTPContainingNewline | AuditsDeprecationIssueTypeChromeLoadTimesConnectionInfo | AuditsDeprecationIssueTypeChromeLoadTimesFirstPaintAfterLoadTime | AuditsDeprecationIssueTypeChromeLoadTimesWasAlternateProtocolAvailable | AuditsDeprecationIssueTypeCookieWithTruncatingChar | AuditsDeprecationIssueTypeCrossOriginAccessBasedOnDocumentDomain | AuditsDeprecationIssueTypeCrossOriginWindowAlert | AuditsDeprecationIssueTypeCrossOriginWindowConfirm | AuditsDeprecationIssueTypeCSSSelectorInternalMediaControlsOverlayCastButton | AuditsDeprecationIssueTypeDeprecationExample | AuditsDeprecationIssueTypeDocumentDomainSettingWithoutOriginAgentClusterHeader | AuditsDeprecationIssueTypeEventPath | AuditsDeprecationIssueTypeExpectCTHeader | AuditsDeprecationIssueTypeGeolocationInsecureOrigin | AuditsDeprecationIssueTypeGeolocationInsecureOriginDeprecatedNotRemoved | AuditsDeprecationIssueTypeGetUserMediaInsecureOrigin | AuditsDeprecationIssueTypeHostCandidateAttributeGetter | AuditsDeprecationIssueTypeIdentityInCanMakePaymentEvent | AuditsDeprecationIssueTypeInsecurePrivateNetworkSubresourceRequest | AuditsDeprecationIssueTypeLocalCSSFileExtensionRejected | AuditsDeprecationIssueTypeMediaSourceAbortRemove | AuditsDeprecationIssueTypeMediaSourceDurationTruncatingBuffered | AuditsDeprecationIssueTypeNoSysexWebMIDIWithoutPermission | AuditsDeprecationIssueTypeNotificationInsecureOrigin | AuditsDeprecationIssueTypeNotificationPermissionRequestedIframe | AuditsDeprecationIssueTypeObsoleteWebRtcCipherSuite | AuditsDeprecationIssueTypeOpenWebDatabaseInsecureContext | AuditsDeprecationIssueTypeOverflowVisibleOnReplacedElement | AuditsDeprecationIssueTypePaymentInstruments | AuditsDeprecationIssueTypePaymentRequestCSPViolation | AuditsDeprecationIssueTypePersistentQuotaType | AuditsDeprecationIssueTypePictureSourceSrc | AuditsDeprecationIssueTypePrefixedCancelAnimationFrame | AuditsDeprecationIssueTypePrefixedRequestAnimationFrame | AuditsDeprecationIssueTypePrefixedStorageInfo | AuditsDeprecationIssueTypePrefixedVideoDisplayingFullscreen | AuditsDeprecationIssueTypePrefixedVideoEnterFullscreen | AuditsDeprecationIssueTypePrefixedVideoEnterFullScreen | AuditsDeprecationIssueTypePrefixedVideoExitFullscreen | AuditsDeprecationIssueTypePrefixedVideoExitFullScreen | AuditsDeprecationIssueTypePrefixedVideoSupportsFullscreen | AuditsDeprecationIssueTypeRangeExpand | AuditsDeprecationIssueTypeRequestedSubresourceWithEmbeddedCredentials | AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpFalse | AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpTrue | AuditsDeprecationIssueTypeRTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics | AuditsDeprecationIssueTypeRTCPeerConnectionSdpSemanticsPlanB | AuditsDeprecationIssueTypeRtcpMuxPolicyNegotiate | AuditsDeprecationIssueTypeSharedArrayBufferConstructedWithoutIsolation | AuditsDeprecationIssueTypeTextToSpeech_DisallowedByAutoplay | AuditsDeprecationIssueTypeV8SharedArrayBufferConstructedInExtensionWithoutIsolation | AuditsDeprecationIssueTypeXHRJSONEncodingDetection | AuditsDeprecationIssueTypeXMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload | AuditsDeprecationIssueTypeXRSupportsSession
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsDeprecationIssueType where
parseJSON = A.withText "AuditsDeprecationIssueType" $ \v -> case v of
"AuthorizationCoveredByWildcard" -> pure AuditsDeprecationIssueTypeAuthorizationCoveredByWildcard
"CanRequestURLHTTPContainingNewline" -> pure AuditsDeprecationIssueTypeCanRequestURLHTTPContainingNewline
"ChromeLoadTimesConnectionInfo" -> pure AuditsDeprecationIssueTypeChromeLoadTimesConnectionInfo
"ChromeLoadTimesFirstPaintAfterLoadTime" -> pure AuditsDeprecationIssueTypeChromeLoadTimesFirstPaintAfterLoadTime
"ChromeLoadTimesWasAlternateProtocolAvailable" -> pure AuditsDeprecationIssueTypeChromeLoadTimesWasAlternateProtocolAvailable
"CookieWithTruncatingChar" -> pure AuditsDeprecationIssueTypeCookieWithTruncatingChar
"CrossOriginAccessBasedOnDocumentDomain" -> pure AuditsDeprecationIssueTypeCrossOriginAccessBasedOnDocumentDomain
"CrossOriginWindowAlert" -> pure AuditsDeprecationIssueTypeCrossOriginWindowAlert
"CrossOriginWindowConfirm" -> pure AuditsDeprecationIssueTypeCrossOriginWindowConfirm
"CSSSelectorInternalMediaControlsOverlayCastButton" -> pure AuditsDeprecationIssueTypeCSSSelectorInternalMediaControlsOverlayCastButton
"DeprecationExample" -> pure AuditsDeprecationIssueTypeDeprecationExample
"DocumentDomainSettingWithoutOriginAgentClusterHeader" -> pure AuditsDeprecationIssueTypeDocumentDomainSettingWithoutOriginAgentClusterHeader
"EventPath" -> pure AuditsDeprecationIssueTypeEventPath
"ExpectCTHeader" -> pure AuditsDeprecationIssueTypeExpectCTHeader
"GeolocationInsecureOrigin" -> pure AuditsDeprecationIssueTypeGeolocationInsecureOrigin
"GeolocationInsecureOriginDeprecatedNotRemoved" -> pure AuditsDeprecationIssueTypeGeolocationInsecureOriginDeprecatedNotRemoved
"GetUserMediaInsecureOrigin" -> pure AuditsDeprecationIssueTypeGetUserMediaInsecureOrigin
"HostCandidateAttributeGetter" -> pure AuditsDeprecationIssueTypeHostCandidateAttributeGetter
"IdentityInCanMakePaymentEvent" -> pure AuditsDeprecationIssueTypeIdentityInCanMakePaymentEvent
"InsecurePrivateNetworkSubresourceRequest" -> pure AuditsDeprecationIssueTypeInsecurePrivateNetworkSubresourceRequest
"LocalCSSFileExtensionRejected" -> pure AuditsDeprecationIssueTypeLocalCSSFileExtensionRejected
"MediaSourceAbortRemove" -> pure AuditsDeprecationIssueTypeMediaSourceAbortRemove
"MediaSourceDurationTruncatingBuffered" -> pure AuditsDeprecationIssueTypeMediaSourceDurationTruncatingBuffered
"NoSysexWebMIDIWithoutPermission" -> pure AuditsDeprecationIssueTypeNoSysexWebMIDIWithoutPermission
"NotificationInsecureOrigin" -> pure AuditsDeprecationIssueTypeNotificationInsecureOrigin
"NotificationPermissionRequestedIframe" -> pure AuditsDeprecationIssueTypeNotificationPermissionRequestedIframe
"ObsoleteWebRtcCipherSuite" -> pure AuditsDeprecationIssueTypeObsoleteWebRtcCipherSuite
"OpenWebDatabaseInsecureContext" -> pure AuditsDeprecationIssueTypeOpenWebDatabaseInsecureContext
"OverflowVisibleOnReplacedElement" -> pure AuditsDeprecationIssueTypeOverflowVisibleOnReplacedElement
"PaymentInstruments" -> pure AuditsDeprecationIssueTypePaymentInstruments
"PaymentRequestCSPViolation" -> pure AuditsDeprecationIssueTypePaymentRequestCSPViolation
"PersistentQuotaType" -> pure AuditsDeprecationIssueTypePersistentQuotaType
"PictureSourceSrc" -> pure AuditsDeprecationIssueTypePictureSourceSrc
"PrefixedCancelAnimationFrame" -> pure AuditsDeprecationIssueTypePrefixedCancelAnimationFrame
"PrefixedRequestAnimationFrame" -> pure AuditsDeprecationIssueTypePrefixedRequestAnimationFrame
"PrefixedStorageInfo" -> pure AuditsDeprecationIssueTypePrefixedStorageInfo
"PrefixedVideoDisplayingFullscreen" -> pure AuditsDeprecationIssueTypePrefixedVideoDisplayingFullscreen
"PrefixedVideoEnterFullscreen" -> pure AuditsDeprecationIssueTypePrefixedVideoEnterFullscreen
"PrefixedVideoEnterFullScreen" -> pure AuditsDeprecationIssueTypePrefixedVideoEnterFullScreen
"PrefixedVideoExitFullscreen" -> pure AuditsDeprecationIssueTypePrefixedVideoExitFullscreen
"PrefixedVideoExitFullScreen" -> pure AuditsDeprecationIssueTypePrefixedVideoExitFullScreen
"PrefixedVideoSupportsFullscreen" -> pure AuditsDeprecationIssueTypePrefixedVideoSupportsFullscreen
"RangeExpand" -> pure AuditsDeprecationIssueTypeRangeExpand
"RequestedSubresourceWithEmbeddedCredentials" -> pure AuditsDeprecationIssueTypeRequestedSubresourceWithEmbeddedCredentials
"RTCConstraintEnableDtlsSrtpFalse" -> pure AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpFalse
"RTCConstraintEnableDtlsSrtpTrue" -> pure AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpTrue
"RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics" -> pure AuditsDeprecationIssueTypeRTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics
"RTCPeerConnectionSdpSemanticsPlanB" -> pure AuditsDeprecationIssueTypeRTCPeerConnectionSdpSemanticsPlanB
"RtcpMuxPolicyNegotiate" -> pure AuditsDeprecationIssueTypeRtcpMuxPolicyNegotiate
"SharedArrayBufferConstructedWithoutIsolation" -> pure AuditsDeprecationIssueTypeSharedArrayBufferConstructedWithoutIsolation
"TextToSpeech_DisallowedByAutoplay" -> pure AuditsDeprecationIssueTypeTextToSpeech_DisallowedByAutoplay
"V8SharedArrayBufferConstructedInExtensionWithoutIsolation" -> pure AuditsDeprecationIssueTypeV8SharedArrayBufferConstructedInExtensionWithoutIsolation
"XHRJSONEncodingDetection" -> pure AuditsDeprecationIssueTypeXHRJSONEncodingDetection
"XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload" -> pure AuditsDeprecationIssueTypeXMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload
"XRSupportsSession" -> pure AuditsDeprecationIssueTypeXRSupportsSession
"_" -> fail "failed to parse AuditsDeprecationIssueType"
instance ToJSON AuditsDeprecationIssueType where
toJSON v = A.String $ case v of
AuditsDeprecationIssueTypeAuthorizationCoveredByWildcard -> "AuthorizationCoveredByWildcard"
AuditsDeprecationIssueTypeCanRequestURLHTTPContainingNewline -> "CanRequestURLHTTPContainingNewline"
AuditsDeprecationIssueTypeChromeLoadTimesConnectionInfo -> "ChromeLoadTimesConnectionInfo"
AuditsDeprecationIssueTypeChromeLoadTimesFirstPaintAfterLoadTime -> "ChromeLoadTimesFirstPaintAfterLoadTime"
AuditsDeprecationIssueTypeChromeLoadTimesWasAlternateProtocolAvailable -> "ChromeLoadTimesWasAlternateProtocolAvailable"
AuditsDeprecationIssueTypeCookieWithTruncatingChar -> "CookieWithTruncatingChar"
AuditsDeprecationIssueTypeCrossOriginAccessBasedOnDocumentDomain -> "CrossOriginAccessBasedOnDocumentDomain"
AuditsDeprecationIssueTypeCrossOriginWindowAlert -> "CrossOriginWindowAlert"
AuditsDeprecationIssueTypeCrossOriginWindowConfirm -> "CrossOriginWindowConfirm"
AuditsDeprecationIssueTypeCSSSelectorInternalMediaControlsOverlayCastButton -> "CSSSelectorInternalMediaControlsOverlayCastButton"
AuditsDeprecationIssueTypeDeprecationExample -> "DeprecationExample"
AuditsDeprecationIssueTypeDocumentDomainSettingWithoutOriginAgentClusterHeader -> "DocumentDomainSettingWithoutOriginAgentClusterHeader"
AuditsDeprecationIssueTypeEventPath -> "EventPath"
AuditsDeprecationIssueTypeExpectCTHeader -> "ExpectCTHeader"
AuditsDeprecationIssueTypeGeolocationInsecureOrigin -> "GeolocationInsecureOrigin"
AuditsDeprecationIssueTypeGeolocationInsecureOriginDeprecatedNotRemoved -> "GeolocationInsecureOriginDeprecatedNotRemoved"
AuditsDeprecationIssueTypeGetUserMediaInsecureOrigin -> "GetUserMediaInsecureOrigin"
AuditsDeprecationIssueTypeHostCandidateAttributeGetter -> "HostCandidateAttributeGetter"
AuditsDeprecationIssueTypeIdentityInCanMakePaymentEvent -> "IdentityInCanMakePaymentEvent"
AuditsDeprecationIssueTypeInsecurePrivateNetworkSubresourceRequest -> "InsecurePrivateNetworkSubresourceRequest"
AuditsDeprecationIssueTypeLocalCSSFileExtensionRejected -> "LocalCSSFileExtensionRejected"
AuditsDeprecationIssueTypeMediaSourceAbortRemove -> "MediaSourceAbortRemove"
AuditsDeprecationIssueTypeMediaSourceDurationTruncatingBuffered -> "MediaSourceDurationTruncatingBuffered"
AuditsDeprecationIssueTypeNoSysexWebMIDIWithoutPermission -> "NoSysexWebMIDIWithoutPermission"
AuditsDeprecationIssueTypeNotificationInsecureOrigin -> "NotificationInsecureOrigin"
AuditsDeprecationIssueTypeNotificationPermissionRequestedIframe -> "NotificationPermissionRequestedIframe"
AuditsDeprecationIssueTypeObsoleteWebRtcCipherSuite -> "ObsoleteWebRtcCipherSuite"
AuditsDeprecationIssueTypeOpenWebDatabaseInsecureContext -> "OpenWebDatabaseInsecureContext"
AuditsDeprecationIssueTypeOverflowVisibleOnReplacedElement -> "OverflowVisibleOnReplacedElement"
AuditsDeprecationIssueTypePaymentInstruments -> "PaymentInstruments"
AuditsDeprecationIssueTypePaymentRequestCSPViolation -> "PaymentRequestCSPViolation"
AuditsDeprecationIssueTypePersistentQuotaType -> "PersistentQuotaType"
AuditsDeprecationIssueTypePictureSourceSrc -> "PictureSourceSrc"
AuditsDeprecationIssueTypePrefixedCancelAnimationFrame -> "PrefixedCancelAnimationFrame"
AuditsDeprecationIssueTypePrefixedRequestAnimationFrame -> "PrefixedRequestAnimationFrame"
AuditsDeprecationIssueTypePrefixedStorageInfo -> "PrefixedStorageInfo"
AuditsDeprecationIssueTypePrefixedVideoDisplayingFullscreen -> "PrefixedVideoDisplayingFullscreen"
AuditsDeprecationIssueTypePrefixedVideoEnterFullscreen -> "PrefixedVideoEnterFullscreen"
AuditsDeprecationIssueTypePrefixedVideoEnterFullScreen -> "PrefixedVideoEnterFullScreen"
AuditsDeprecationIssueTypePrefixedVideoExitFullscreen -> "PrefixedVideoExitFullscreen"
AuditsDeprecationIssueTypePrefixedVideoExitFullScreen -> "PrefixedVideoExitFullScreen"
AuditsDeprecationIssueTypePrefixedVideoSupportsFullscreen -> "PrefixedVideoSupportsFullscreen"
AuditsDeprecationIssueTypeRangeExpand -> "RangeExpand"
AuditsDeprecationIssueTypeRequestedSubresourceWithEmbeddedCredentials -> "RequestedSubresourceWithEmbeddedCredentials"
AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpFalse -> "RTCConstraintEnableDtlsSrtpFalse"
AuditsDeprecationIssueTypeRTCConstraintEnableDtlsSrtpTrue -> "RTCConstraintEnableDtlsSrtpTrue"
AuditsDeprecationIssueTypeRTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics -> "RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics"
AuditsDeprecationIssueTypeRTCPeerConnectionSdpSemanticsPlanB -> "RTCPeerConnectionSdpSemanticsPlanB"
AuditsDeprecationIssueTypeRtcpMuxPolicyNegotiate -> "RtcpMuxPolicyNegotiate"
AuditsDeprecationIssueTypeSharedArrayBufferConstructedWithoutIsolation -> "SharedArrayBufferConstructedWithoutIsolation"
AuditsDeprecationIssueTypeTextToSpeech_DisallowedByAutoplay -> "TextToSpeech_DisallowedByAutoplay"
AuditsDeprecationIssueTypeV8SharedArrayBufferConstructedInExtensionWithoutIsolation -> "V8SharedArrayBufferConstructedInExtensionWithoutIsolation"
AuditsDeprecationIssueTypeXHRJSONEncodingDetection -> "XHRJSONEncodingDetection"
AuditsDeprecationIssueTypeXMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload -> "XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload"
AuditsDeprecationIssueTypeXRSupportsSession -> "XRSupportsSession"
-- | Type 'Audits.DeprecationIssueDetails'.
-- This issue tracks information needed to print a deprecation message.
-- https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/third_party/blink/renderer/core/frame/deprecation/README.md
data AuditsDeprecationIssueDetails = AuditsDeprecationIssueDetails
{
auditsDeprecationIssueDetailsAffectedFrame :: Maybe AuditsAffectedFrame,
auditsDeprecationIssueDetailsSourceCodeLocation :: AuditsSourceCodeLocation,
auditsDeprecationIssueDetailsType :: AuditsDeprecationIssueType
}
deriving (Eq, Show)
instance FromJSON AuditsDeprecationIssueDetails where
parseJSON = A.withObject "AuditsDeprecationIssueDetails" $ \o -> AuditsDeprecationIssueDetails
<$> o A..:? "affectedFrame"
<*> o A..: "sourceCodeLocation"
<*> o A..: "type"
instance ToJSON AuditsDeprecationIssueDetails where
toJSON p = A.object $ catMaybes [
("affectedFrame" A..=) <$> (auditsDeprecationIssueDetailsAffectedFrame p),
("sourceCodeLocation" A..=) <$> Just (auditsDeprecationIssueDetailsSourceCodeLocation p),
("type" A..=) <$> Just (auditsDeprecationIssueDetailsType p)
]
-- | Type 'Audits.ClientHintIssueReason'.
data AuditsClientHintIssueReason = AuditsClientHintIssueReasonMetaTagAllowListInvalidOrigin | AuditsClientHintIssueReasonMetaTagModifiedHTML
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsClientHintIssueReason where
parseJSON = A.withText "AuditsClientHintIssueReason" $ \v -> case v of
"MetaTagAllowListInvalidOrigin" -> pure AuditsClientHintIssueReasonMetaTagAllowListInvalidOrigin
"MetaTagModifiedHTML" -> pure AuditsClientHintIssueReasonMetaTagModifiedHTML
"_" -> fail "failed to parse AuditsClientHintIssueReason"
instance ToJSON AuditsClientHintIssueReason where
toJSON v = A.String $ case v of
AuditsClientHintIssueReasonMetaTagAllowListInvalidOrigin -> "MetaTagAllowListInvalidOrigin"
AuditsClientHintIssueReasonMetaTagModifiedHTML -> "MetaTagModifiedHTML"
-- | Type 'Audits.FederatedAuthRequestIssueDetails'.
data AuditsFederatedAuthRequestIssueDetails = AuditsFederatedAuthRequestIssueDetails
{
auditsFederatedAuthRequestIssueDetailsFederatedAuthRequestIssueReason :: AuditsFederatedAuthRequestIssueReason
}
deriving (Eq, Show)
instance FromJSON AuditsFederatedAuthRequestIssueDetails where
parseJSON = A.withObject "AuditsFederatedAuthRequestIssueDetails" $ \o -> AuditsFederatedAuthRequestIssueDetails
<$> o A..: "federatedAuthRequestIssueReason"
instance ToJSON AuditsFederatedAuthRequestIssueDetails where
toJSON p = A.object $ catMaybes [
("federatedAuthRequestIssueReason" A..=) <$> Just (auditsFederatedAuthRequestIssueDetailsFederatedAuthRequestIssueReason p)
]
-- | Type 'Audits.FederatedAuthRequestIssueReason'.
-- Represents the failure reason when a federated authentication reason fails.
-- Should be updated alongside RequestIdTokenStatus in
-- third_party/blink/public/mojom/devtools/inspector_issue.mojom to include
-- all cases except for success.
data AuditsFederatedAuthRequestIssueReason = AuditsFederatedAuthRequestIssueReasonShouldEmbargo | AuditsFederatedAuthRequestIssueReasonTooManyRequests | AuditsFederatedAuthRequestIssueReasonManifestListHttpNotFound | AuditsFederatedAuthRequestIssueReasonManifestListNoResponse | AuditsFederatedAuthRequestIssueReasonManifestListInvalidResponse | AuditsFederatedAuthRequestIssueReasonManifestNotInManifestList | AuditsFederatedAuthRequestIssueReasonManifestListTooBig | AuditsFederatedAuthRequestIssueReasonManifestHttpNotFound | AuditsFederatedAuthRequestIssueReasonManifestNoResponse | AuditsFederatedAuthRequestIssueReasonManifestInvalidResponse | AuditsFederatedAuthRequestIssueReasonClientMetadataHttpNotFound | AuditsFederatedAuthRequestIssueReasonClientMetadataNoResponse | AuditsFederatedAuthRequestIssueReasonClientMetadataInvalidResponse | AuditsFederatedAuthRequestIssueReasonDisabledInSettings | AuditsFederatedAuthRequestIssueReasonErrorFetchingSignin | AuditsFederatedAuthRequestIssueReasonInvalidSigninResponse | AuditsFederatedAuthRequestIssueReasonAccountsHttpNotFound | AuditsFederatedAuthRequestIssueReasonAccountsNoResponse | AuditsFederatedAuthRequestIssueReasonAccountsInvalidResponse | AuditsFederatedAuthRequestIssueReasonIdTokenHttpNotFound | AuditsFederatedAuthRequestIssueReasonIdTokenNoResponse | AuditsFederatedAuthRequestIssueReasonIdTokenInvalidResponse | AuditsFederatedAuthRequestIssueReasonIdTokenInvalidRequest | AuditsFederatedAuthRequestIssueReasonErrorIdToken | AuditsFederatedAuthRequestIssueReasonCanceled | AuditsFederatedAuthRequestIssueReasonRpPageNotVisible
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsFederatedAuthRequestIssueReason where
parseJSON = A.withText "AuditsFederatedAuthRequestIssueReason" $ \v -> case v of
"ShouldEmbargo" -> pure AuditsFederatedAuthRequestIssueReasonShouldEmbargo
"TooManyRequests" -> pure AuditsFederatedAuthRequestIssueReasonTooManyRequests
"ManifestListHttpNotFound" -> pure AuditsFederatedAuthRequestIssueReasonManifestListHttpNotFound
"ManifestListNoResponse" -> pure AuditsFederatedAuthRequestIssueReasonManifestListNoResponse
"ManifestListInvalidResponse" -> pure AuditsFederatedAuthRequestIssueReasonManifestListInvalidResponse
"ManifestNotInManifestList" -> pure AuditsFederatedAuthRequestIssueReasonManifestNotInManifestList
"ManifestListTooBig" -> pure AuditsFederatedAuthRequestIssueReasonManifestListTooBig
"ManifestHttpNotFound" -> pure AuditsFederatedAuthRequestIssueReasonManifestHttpNotFound
"ManifestNoResponse" -> pure AuditsFederatedAuthRequestIssueReasonManifestNoResponse
"ManifestInvalidResponse" -> pure AuditsFederatedAuthRequestIssueReasonManifestInvalidResponse
"ClientMetadataHttpNotFound" -> pure AuditsFederatedAuthRequestIssueReasonClientMetadataHttpNotFound
"ClientMetadataNoResponse" -> pure AuditsFederatedAuthRequestIssueReasonClientMetadataNoResponse
"ClientMetadataInvalidResponse" -> pure AuditsFederatedAuthRequestIssueReasonClientMetadataInvalidResponse
"DisabledInSettings" -> pure AuditsFederatedAuthRequestIssueReasonDisabledInSettings
"ErrorFetchingSignin" -> pure AuditsFederatedAuthRequestIssueReasonErrorFetchingSignin
"InvalidSigninResponse" -> pure AuditsFederatedAuthRequestIssueReasonInvalidSigninResponse
"AccountsHttpNotFound" -> pure AuditsFederatedAuthRequestIssueReasonAccountsHttpNotFound
"AccountsNoResponse" -> pure AuditsFederatedAuthRequestIssueReasonAccountsNoResponse
"AccountsInvalidResponse" -> pure AuditsFederatedAuthRequestIssueReasonAccountsInvalidResponse
"IdTokenHttpNotFound" -> pure AuditsFederatedAuthRequestIssueReasonIdTokenHttpNotFound
"IdTokenNoResponse" -> pure AuditsFederatedAuthRequestIssueReasonIdTokenNoResponse
"IdTokenInvalidResponse" -> pure AuditsFederatedAuthRequestIssueReasonIdTokenInvalidResponse
"IdTokenInvalidRequest" -> pure AuditsFederatedAuthRequestIssueReasonIdTokenInvalidRequest
"ErrorIdToken" -> pure AuditsFederatedAuthRequestIssueReasonErrorIdToken
"Canceled" -> pure AuditsFederatedAuthRequestIssueReasonCanceled
"RpPageNotVisible" -> pure AuditsFederatedAuthRequestIssueReasonRpPageNotVisible
"_" -> fail "failed to parse AuditsFederatedAuthRequestIssueReason"
instance ToJSON AuditsFederatedAuthRequestIssueReason where
toJSON v = A.String $ case v of
AuditsFederatedAuthRequestIssueReasonShouldEmbargo -> "ShouldEmbargo"
AuditsFederatedAuthRequestIssueReasonTooManyRequests -> "TooManyRequests"
AuditsFederatedAuthRequestIssueReasonManifestListHttpNotFound -> "ManifestListHttpNotFound"
AuditsFederatedAuthRequestIssueReasonManifestListNoResponse -> "ManifestListNoResponse"
AuditsFederatedAuthRequestIssueReasonManifestListInvalidResponse -> "ManifestListInvalidResponse"
AuditsFederatedAuthRequestIssueReasonManifestNotInManifestList -> "ManifestNotInManifestList"
AuditsFederatedAuthRequestIssueReasonManifestListTooBig -> "ManifestListTooBig"
AuditsFederatedAuthRequestIssueReasonManifestHttpNotFound -> "ManifestHttpNotFound"
AuditsFederatedAuthRequestIssueReasonManifestNoResponse -> "ManifestNoResponse"
AuditsFederatedAuthRequestIssueReasonManifestInvalidResponse -> "ManifestInvalidResponse"
AuditsFederatedAuthRequestIssueReasonClientMetadataHttpNotFound -> "ClientMetadataHttpNotFound"
AuditsFederatedAuthRequestIssueReasonClientMetadataNoResponse -> "ClientMetadataNoResponse"
AuditsFederatedAuthRequestIssueReasonClientMetadataInvalidResponse -> "ClientMetadataInvalidResponse"
AuditsFederatedAuthRequestIssueReasonDisabledInSettings -> "DisabledInSettings"
AuditsFederatedAuthRequestIssueReasonErrorFetchingSignin -> "ErrorFetchingSignin"
AuditsFederatedAuthRequestIssueReasonInvalidSigninResponse -> "InvalidSigninResponse"
AuditsFederatedAuthRequestIssueReasonAccountsHttpNotFound -> "AccountsHttpNotFound"
AuditsFederatedAuthRequestIssueReasonAccountsNoResponse -> "AccountsNoResponse"
AuditsFederatedAuthRequestIssueReasonAccountsInvalidResponse -> "AccountsInvalidResponse"
AuditsFederatedAuthRequestIssueReasonIdTokenHttpNotFound -> "IdTokenHttpNotFound"
AuditsFederatedAuthRequestIssueReasonIdTokenNoResponse -> "IdTokenNoResponse"
AuditsFederatedAuthRequestIssueReasonIdTokenInvalidResponse -> "IdTokenInvalidResponse"
AuditsFederatedAuthRequestIssueReasonIdTokenInvalidRequest -> "IdTokenInvalidRequest"
AuditsFederatedAuthRequestIssueReasonErrorIdToken -> "ErrorIdToken"
AuditsFederatedAuthRequestIssueReasonCanceled -> "Canceled"
AuditsFederatedAuthRequestIssueReasonRpPageNotVisible -> "RpPageNotVisible"
-- | Type 'Audits.ClientHintIssueDetails'.
-- This issue tracks client hints related issues. It's used to deprecate old
-- features, encourage the use of new ones, and provide general guidance.
data AuditsClientHintIssueDetails = AuditsClientHintIssueDetails
{
auditsClientHintIssueDetailsSourceCodeLocation :: AuditsSourceCodeLocation,
auditsClientHintIssueDetailsClientHintIssueReason :: AuditsClientHintIssueReason
}
deriving (Eq, Show)
instance FromJSON AuditsClientHintIssueDetails where
parseJSON = A.withObject "AuditsClientHintIssueDetails" $ \o -> AuditsClientHintIssueDetails
<$> o A..: "sourceCodeLocation"
<*> o A..: "clientHintIssueReason"
instance ToJSON AuditsClientHintIssueDetails where
toJSON p = A.object $ catMaybes [
("sourceCodeLocation" A..=) <$> Just (auditsClientHintIssueDetailsSourceCodeLocation p),
("clientHintIssueReason" A..=) <$> Just (auditsClientHintIssueDetailsClientHintIssueReason p)
]
-- | Type 'Audits.InspectorIssueCode'.
-- A unique identifier for the type of issue. Each type may use one of the
-- optional fields in InspectorIssueDetails to convey more specific
-- information about the kind of issue.
data AuditsInspectorIssueCode = AuditsInspectorIssueCodeCookieIssue | AuditsInspectorIssueCodeMixedContentIssue | AuditsInspectorIssueCodeBlockedByResponseIssue | AuditsInspectorIssueCodeHeavyAdIssue | AuditsInspectorIssueCodeContentSecurityPolicyIssue | AuditsInspectorIssueCodeSharedArrayBufferIssue | AuditsInspectorIssueCodeTrustedWebActivityIssue | AuditsInspectorIssueCodeLowTextContrastIssue | AuditsInspectorIssueCodeCorsIssue | AuditsInspectorIssueCodeAttributionReportingIssue | AuditsInspectorIssueCodeQuirksModeIssue | AuditsInspectorIssueCodeNavigatorUserAgentIssue | AuditsInspectorIssueCodeGenericIssue | AuditsInspectorIssueCodeDeprecationIssue | AuditsInspectorIssueCodeClientHintIssue | AuditsInspectorIssueCodeFederatedAuthRequestIssue
deriving (Ord, Eq, Show, Read)
instance FromJSON AuditsInspectorIssueCode where
parseJSON = A.withText "AuditsInspectorIssueCode" $ \v -> case v of
"CookieIssue" -> pure AuditsInspectorIssueCodeCookieIssue
"MixedContentIssue" -> pure AuditsInspectorIssueCodeMixedContentIssue
"BlockedByResponseIssue" -> pure AuditsInspectorIssueCodeBlockedByResponseIssue
"HeavyAdIssue" -> pure AuditsInspectorIssueCodeHeavyAdIssue
"ContentSecurityPolicyIssue" -> pure AuditsInspectorIssueCodeContentSecurityPolicyIssue
"SharedArrayBufferIssue" -> pure AuditsInspectorIssueCodeSharedArrayBufferIssue
"TrustedWebActivityIssue" -> pure AuditsInspectorIssueCodeTrustedWebActivityIssue
"LowTextContrastIssue" -> pure AuditsInspectorIssueCodeLowTextContrastIssue
"CorsIssue" -> pure AuditsInspectorIssueCodeCorsIssue
"AttributionReportingIssue" -> pure AuditsInspectorIssueCodeAttributionReportingIssue
"QuirksModeIssue" -> pure AuditsInspectorIssueCodeQuirksModeIssue
"NavigatorUserAgentIssue" -> pure AuditsInspectorIssueCodeNavigatorUserAgentIssue
"GenericIssue" -> pure AuditsInspectorIssueCodeGenericIssue
"DeprecationIssue" -> pure AuditsInspectorIssueCodeDeprecationIssue
"ClientHintIssue" -> pure AuditsInspectorIssueCodeClientHintIssue
"FederatedAuthRequestIssue" -> pure AuditsInspectorIssueCodeFederatedAuthRequestIssue
"_" -> fail "failed to parse AuditsInspectorIssueCode"
instance ToJSON AuditsInspectorIssueCode where
toJSON v = A.String $ case v of
AuditsInspectorIssueCodeCookieIssue -> "CookieIssue"
AuditsInspectorIssueCodeMixedContentIssue -> "MixedContentIssue"
AuditsInspectorIssueCodeBlockedByResponseIssue -> "BlockedByResponseIssue"
AuditsInspectorIssueCodeHeavyAdIssue -> "HeavyAdIssue"
AuditsInspectorIssueCodeContentSecurityPolicyIssue -> "ContentSecurityPolicyIssue"
AuditsInspectorIssueCodeSharedArrayBufferIssue -> "SharedArrayBufferIssue"
AuditsInspectorIssueCodeTrustedWebActivityIssue -> "TrustedWebActivityIssue"
AuditsInspectorIssueCodeLowTextContrastIssue -> "LowTextContrastIssue"
AuditsInspectorIssueCodeCorsIssue -> "CorsIssue"
AuditsInspectorIssueCodeAttributionReportingIssue -> "AttributionReportingIssue"
AuditsInspectorIssueCodeQuirksModeIssue -> "QuirksModeIssue"
AuditsInspectorIssueCodeNavigatorUserAgentIssue -> "NavigatorUserAgentIssue"
AuditsInspectorIssueCodeGenericIssue -> "GenericIssue"
AuditsInspectorIssueCodeDeprecationIssue -> "DeprecationIssue"
AuditsInspectorIssueCodeClientHintIssue -> "ClientHintIssue"
AuditsInspectorIssueCodeFederatedAuthRequestIssue -> "FederatedAuthRequestIssue"
-- | Type 'Audits.InspectorIssueDetails'.
-- This struct holds a list of optional fields with additional information
-- specific to the kind of issue. When adding a new issue code, please also
-- add a new optional field to this type.
data AuditsInspectorIssueDetails = AuditsInspectorIssueDetails
{
auditsInspectorIssueDetailsCookieIssueDetails :: Maybe AuditsCookieIssueDetails,
auditsInspectorIssueDetailsMixedContentIssueDetails :: Maybe AuditsMixedContentIssueDetails,
auditsInspectorIssueDetailsBlockedByResponseIssueDetails :: Maybe AuditsBlockedByResponseIssueDetails,
auditsInspectorIssueDetailsHeavyAdIssueDetails :: Maybe AuditsHeavyAdIssueDetails,
auditsInspectorIssueDetailsContentSecurityPolicyIssueDetails :: Maybe AuditsContentSecurityPolicyIssueDetails,
auditsInspectorIssueDetailsSharedArrayBufferIssueDetails :: Maybe AuditsSharedArrayBufferIssueDetails,
auditsInspectorIssueDetailsTwaQualityEnforcementDetails :: Maybe AuditsTrustedWebActivityIssueDetails,
auditsInspectorIssueDetailsLowTextContrastIssueDetails :: Maybe AuditsLowTextContrastIssueDetails,
auditsInspectorIssueDetailsCorsIssueDetails :: Maybe AuditsCorsIssueDetails,
auditsInspectorIssueDetailsAttributionReportingIssueDetails :: Maybe AuditsAttributionReportingIssueDetails,
auditsInspectorIssueDetailsQuirksModeIssueDetails :: Maybe AuditsQuirksModeIssueDetails,
auditsInspectorIssueDetailsNavigatorUserAgentIssueDetails :: Maybe AuditsNavigatorUserAgentIssueDetails,
auditsInspectorIssueDetailsGenericIssueDetails :: Maybe AuditsGenericIssueDetails,
auditsInspectorIssueDetailsDeprecationIssueDetails :: Maybe AuditsDeprecationIssueDetails,
auditsInspectorIssueDetailsClientHintIssueDetails :: Maybe AuditsClientHintIssueDetails,
auditsInspectorIssueDetailsFederatedAuthRequestIssueDetails :: Maybe AuditsFederatedAuthRequestIssueDetails
}
deriving (Eq, Show)
instance FromJSON AuditsInspectorIssueDetails where
parseJSON = A.withObject "AuditsInspectorIssueDetails" $ \o -> AuditsInspectorIssueDetails
<$> o A..:? "cookieIssueDetails"
<*> o A..:? "mixedContentIssueDetails"
<*> o A..:? "blockedByResponseIssueDetails"
<*> o A..:? "heavyAdIssueDetails"
<*> o A..:? "contentSecurityPolicyIssueDetails"
<*> o A..:? "sharedArrayBufferIssueDetails"
<*> o A..:? "twaQualityEnforcementDetails"
<*> o A..:? "lowTextContrastIssueDetails"
<*> o A..:? "corsIssueDetails"
<*> o A..:? "attributionReportingIssueDetails"
<*> o A..:? "quirksModeIssueDetails"
<*> o A..:? "navigatorUserAgentIssueDetails"
<*> o A..:? "genericIssueDetails"
<*> o A..:? "deprecationIssueDetails"
<*> o A..:? "clientHintIssueDetails"
<*> o A..:? "federatedAuthRequestIssueDetails"
instance ToJSON AuditsInspectorIssueDetails where
toJSON p = A.object $ catMaybes [
("cookieIssueDetails" A..=) <$> (auditsInspectorIssueDetailsCookieIssueDetails p),
("mixedContentIssueDetails" A..=) <$> (auditsInspectorIssueDetailsMixedContentIssueDetails p),
("blockedByResponseIssueDetails" A..=) <$> (auditsInspectorIssueDetailsBlockedByResponseIssueDetails p),
("heavyAdIssueDetails" A..=) <$> (auditsInspectorIssueDetailsHeavyAdIssueDetails p),
("contentSecurityPolicyIssueDetails" A..=) <$> (auditsInspectorIssueDetailsContentSecurityPolicyIssueDetails p),
("sharedArrayBufferIssueDetails" A..=) <$> (auditsInspectorIssueDetailsSharedArrayBufferIssueDetails p),
("twaQualityEnforcementDetails" A..=) <$> (auditsInspectorIssueDetailsTwaQualityEnforcementDetails p),
("lowTextContrastIssueDetails" A..=) <$> (auditsInspectorIssueDetailsLowTextContrastIssueDetails p),
("corsIssueDetails" A..=) <$> (auditsInspectorIssueDetailsCorsIssueDetails p),
("attributionReportingIssueDetails" A..=) <$> (auditsInspectorIssueDetailsAttributionReportingIssueDetails p),
("quirksModeIssueDetails" A..=) <$> (auditsInspectorIssueDetailsQuirksModeIssueDetails p),
("navigatorUserAgentIssueDetails" A..=) <$> (auditsInspectorIssueDetailsNavigatorUserAgentIssueDetails p),
("genericIssueDetails" A..=) <$> (auditsInspectorIssueDetailsGenericIssueDetails p),
("deprecationIssueDetails" A..=) <$> (auditsInspectorIssueDetailsDeprecationIssueDetails p),
("clientHintIssueDetails" A..=) <$> (auditsInspectorIssueDetailsClientHintIssueDetails p),
("federatedAuthRequestIssueDetails" A..=) <$> (auditsInspectorIssueDetailsFederatedAuthRequestIssueDetails p)
]
-- | Type 'Audits.IssueId'.
-- A unique id for a DevTools inspector issue. Allows other entities (e.g.
-- exceptions, CDP message, console messages, etc.) to reference an issue.
type AuditsIssueId = T.Text
-- | Type 'Audits.InspectorIssue'.
-- An inspector issue reported from the back-end.
data AuditsInspectorIssue = AuditsInspectorIssue
{
auditsInspectorIssueCode :: AuditsInspectorIssueCode,
auditsInspectorIssueDetails :: AuditsInspectorIssueDetails,
-- | A unique id for this issue. May be omitted if no other entity (e.g.
-- exception, CDP message, etc.) is referencing this issue.
auditsInspectorIssueIssueId :: Maybe AuditsIssueId
}
deriving (Eq, Show)
instance FromJSON AuditsInspectorIssue where
parseJSON = A.withObject "AuditsInspectorIssue" $ \o -> AuditsInspectorIssue
<$> o A..: "code"
<*> o A..: "details"
<*> o A..:? "issueId"
instance ToJSON AuditsInspectorIssue where
toJSON p = A.object $ catMaybes [
("code" A..=) <$> Just (auditsInspectorIssueCode p),
("details" A..=) <$> Just (auditsInspectorIssueDetails p),
("issueId" A..=) <$> (auditsInspectorIssueIssueId p)
]
-- | Type of the 'Audits.issueAdded' event.
data AuditsIssueAdded = AuditsIssueAdded
{
auditsIssueAddedIssue :: AuditsInspectorIssue
}
deriving (Eq, Show)
instance FromJSON AuditsIssueAdded where
parseJSON = A.withObject "AuditsIssueAdded" $ \o -> AuditsIssueAdded
<$> o A..: "issue"
instance Event AuditsIssueAdded where
eventName _ = "Audits.issueAdded"
-- | Returns the response body and size if it were re-encoded with the specified settings. Only
-- applies to images.
-- | Parameters of the 'Audits.getEncodedResponse' command.
data PAuditsGetEncodedResponseEncoding = PAuditsGetEncodedResponseEncodingWebp | PAuditsGetEncodedResponseEncodingJpeg | PAuditsGetEncodedResponseEncodingPng
deriving (Ord, Eq, Show, Read)
instance FromJSON PAuditsGetEncodedResponseEncoding where
parseJSON = A.withText "PAuditsGetEncodedResponseEncoding" $ \v -> case v of
"webp" -> pure PAuditsGetEncodedResponseEncodingWebp
"jpeg" -> pure PAuditsGetEncodedResponseEncodingJpeg
"png" -> pure PAuditsGetEncodedResponseEncodingPng
"_" -> fail "failed to parse PAuditsGetEncodedResponseEncoding"
instance ToJSON PAuditsGetEncodedResponseEncoding where
toJSON v = A.String $ case v of
PAuditsGetEncodedResponseEncodingWebp -> "webp"
PAuditsGetEncodedResponseEncodingJpeg -> "jpeg"
PAuditsGetEncodedResponseEncodingPng -> "png"
data PAuditsGetEncodedResponse = PAuditsGetEncodedResponse
{
-- | Identifier of the network request to get content for.
pAuditsGetEncodedResponseRequestId :: DOMPageNetworkEmulationSecurity.NetworkRequestId,
-- | The encoding to use.
pAuditsGetEncodedResponseEncoding :: PAuditsGetEncodedResponseEncoding,
-- | The quality of the encoding (0-1). (defaults to 1)
pAuditsGetEncodedResponseQuality :: Maybe Double,
-- | Whether to only return the size information (defaults to false).
pAuditsGetEncodedResponseSizeOnly :: Maybe Bool
}
deriving (Eq, Show)
pAuditsGetEncodedResponse
{-
-- | Identifier of the network request to get content for.
-}
:: DOMPageNetworkEmulationSecurity.NetworkRequestId
{-
-- | The encoding to use.
-}
-> PAuditsGetEncodedResponseEncoding
-> PAuditsGetEncodedResponse
pAuditsGetEncodedResponse
arg_pAuditsGetEncodedResponseRequestId
arg_pAuditsGetEncodedResponseEncoding
= PAuditsGetEncodedResponse
arg_pAuditsGetEncodedResponseRequestId
arg_pAuditsGetEncodedResponseEncoding
Nothing
Nothing
instance ToJSON PAuditsGetEncodedResponse where
toJSON p = A.object $ catMaybes [
("requestId" A..=) <$> Just (pAuditsGetEncodedResponseRequestId p),
("encoding" A..=) <$> Just (pAuditsGetEncodedResponseEncoding p),
("quality" A..=) <$> (pAuditsGetEncodedResponseQuality p),
("sizeOnly" A..=) <$> (pAuditsGetEncodedResponseSizeOnly p)
]
data AuditsGetEncodedResponse = AuditsGetEncodedResponse
{
-- | The encoded body as a base64 string. Omitted if sizeOnly is true. (Encoded as a base64 string when passed over JSON)
auditsGetEncodedResponseBody :: Maybe T.Text,
-- | Size before re-encoding.
auditsGetEncodedResponseOriginalSize :: Int,
-- | Size after re-encoding.
auditsGetEncodedResponseEncodedSize :: Int
}
deriving (Eq, Show)
instance FromJSON AuditsGetEncodedResponse where
parseJSON = A.withObject "AuditsGetEncodedResponse" $ \o -> AuditsGetEncodedResponse
<$> o A..:? "body"
<*> o A..: "originalSize"
<*> o A..: "encodedSize"
instance Command PAuditsGetEncodedResponse where
type CommandResponse PAuditsGetEncodedResponse = AuditsGetEncodedResponse
commandName _ = "Audits.getEncodedResponse"
-- | Disables issues domain, prevents further issues from being reported to the client.
-- | Parameters of the 'Audits.disable' command.
data PAuditsDisable = PAuditsDisable
deriving (Eq, Show)
pAuditsDisable
:: PAuditsDisable
pAuditsDisable
= PAuditsDisable
instance ToJSON PAuditsDisable where
toJSON _ = A.Null
instance Command PAuditsDisable where
type CommandResponse PAuditsDisable = ()
commandName _ = "Audits.disable"
fromJSON = const . A.Success . const ()
-- | Enables issues domain, sends the issues collected so far to the client by means of the
-- `issueAdded` event.
-- | Parameters of the 'Audits.enable' command.
data PAuditsEnable = PAuditsEnable
deriving (Eq, Show)
pAuditsEnable
:: PAuditsEnable
pAuditsEnable
= PAuditsEnable
instance ToJSON PAuditsEnable where
toJSON _ = A.Null
instance Command PAuditsEnable where
type CommandResponse PAuditsEnable = ()
commandName _ = "Audits.enable"
fromJSON = const . A.Success . const ()
-- | Runs the contrast check for the target page. Found issues are reported
-- using Audits.issueAdded event.
-- | Parameters of the 'Audits.checkContrast' command.
data PAuditsCheckContrast = PAuditsCheckContrast
{
-- | Whether to report WCAG AAA level issues. Default is false.
pAuditsCheckContrastReportAAA :: Maybe Bool
}
deriving (Eq, Show)
pAuditsCheckContrast
:: PAuditsCheckContrast
pAuditsCheckContrast
= PAuditsCheckContrast
Nothing
instance ToJSON PAuditsCheckContrast where
toJSON p = A.object $ catMaybes [
("reportAAA" A..=) <$> (pAuditsCheckContrastReportAAA p)
]
instance Command PAuditsCheckContrast where
type CommandResponse PAuditsCheckContrast = ()
commandName _ = "Audits.checkContrast"
fromJSON = const . A.Success . const ()