mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 14:52:16 +00:00
Bug 1882606 - Add about:support information for Content Analysis r=dlp-reviewers,fluent-reviewers,bolsson,handyman
Differential Revision: https://phabricator.services.mozilla.com/D205121
This commit is contained in:
parent
dbb038279c
commit
5d3a39fdcd
@ -825,6 +825,8 @@ NS_IMPL_ISUPPORTS(ContentAnalysisAcknowledgement,
|
|||||||
nsIContentAnalysisAcknowledgement);
|
nsIContentAnalysisAcknowledgement);
|
||||||
NS_IMPL_ISUPPORTS(ContentAnalysisCallback, nsIContentAnalysisCallback);
|
NS_IMPL_ISUPPORTS(ContentAnalysisCallback, nsIContentAnalysisCallback);
|
||||||
NS_IMPL_ISUPPORTS(ContentAnalysisResult, nsIContentAnalysisResult);
|
NS_IMPL_ISUPPORTS(ContentAnalysisResult, nsIContentAnalysisResult);
|
||||||
|
NS_IMPL_ISUPPORTS(ContentAnalysisDiagnosticInfo,
|
||||||
|
nsIContentAnalysisDiagnosticInfo);
|
||||||
NS_IMPL_ISUPPORTS(ContentAnalysis, nsIContentAnalysis, ContentAnalysis);
|
NS_IMPL_ISUPPORTS(ContentAnalysis, nsIContentAnalysis, ContentAnalysis);
|
||||||
|
|
||||||
ContentAnalysis::ContentAnalysis()
|
ContentAnalysis::ContentAnalysis()
|
||||||
@ -1425,6 +1427,40 @@ nsresult ContentAnalysis::RunAcknowledgeTask(
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
ContentAnalysis::GetDiagnosticInfo(JSContext* aCx,
|
||||||
|
mozilla::dom::Promise** aPromise) {
|
||||||
|
RefPtr<mozilla::dom::Promise> promise;
|
||||||
|
nsresult rv = MakePromise(aCx, &promise);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
mCaClientPromise->Then(
|
||||||
|
GetCurrentSerialEventTarget(), __func__,
|
||||||
|
[promise](std::shared_ptr<content_analysis::sdk::Client> client) mutable {
|
||||||
|
if (!client) {
|
||||||
|
auto info = MakeRefPtr<ContentAnalysisDiagnosticInfo>(
|
||||||
|
false, EmptyString(), false, 0);
|
||||||
|
promise->MaybeResolve(info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RefPtr<ContentAnalysis> self = GetContentAnalysisFromService();
|
||||||
|
std::string agentPath = client->GetAgentInfo().binary_path;
|
||||||
|
nsString agentWidePath = NS_ConvertUTF8toUTF16(agentPath);
|
||||||
|
auto info = MakeRefPtr<ContentAnalysisDiagnosticInfo>(
|
||||||
|
true, std::move(agentWidePath), false,
|
||||||
|
self ? self->mRequestCount : 0);
|
||||||
|
promise->MaybeResolve(info);
|
||||||
|
},
|
||||||
|
[promise](nsresult rv) {
|
||||||
|
RefPtr<ContentAnalysis> self = GetContentAnalysisFromService();
|
||||||
|
auto info = MakeRefPtr<ContentAnalysisDiagnosticInfo>(
|
||||||
|
false, EmptyString(), rv == NS_ERROR_INVALID_SIGNATURE,
|
||||||
|
self ? self->mRequestCount : 0);
|
||||||
|
promise->MaybeResolve(info);
|
||||||
|
});
|
||||||
|
promise.forget(aPromise);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP ContentAnalysisCallback::ContentResult(
|
NS_IMETHODIMP ContentAnalysisCallback::ContentResult(
|
||||||
nsIContentAnalysisResponse* aResponse) {
|
nsIContentAnalysisResponse* aResponse) {
|
||||||
if (mPromise.isSome()) {
|
if (mPromise.isSome()) {
|
||||||
@ -1448,6 +1484,28 @@ ContentAnalysisCallback::ContentAnalysisCallback(RefPtr<dom::Promise> aPromise)
|
|||||||
: mPromise(Some(new nsMainThreadPtrHolder<dom::Promise>(
|
: mPromise(Some(new nsMainThreadPtrHolder<dom::Promise>(
|
||||||
"content analysis promise", aPromise))) {}
|
"content analysis promise", aPromise))) {}
|
||||||
|
|
||||||
|
NS_IMETHODIMP ContentAnalysisDiagnosticInfo::GetConnectedToAgent(
|
||||||
|
bool* aConnectedToAgent) {
|
||||||
|
*aConnectedToAgent = mConnectedToAgent;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
NS_IMETHODIMP ContentAnalysisDiagnosticInfo::GetAgentPath(
|
||||||
|
nsAString& aAgentPath) {
|
||||||
|
aAgentPath = mAgentPath;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
NS_IMETHODIMP ContentAnalysisDiagnosticInfo::GetFailedSignatureVerification(
|
||||||
|
bool* aFailedSignatureVerification) {
|
||||||
|
*aFailedSignatureVerification = mFailedSignatureVerification;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP ContentAnalysisDiagnosticInfo::GetRequestCount(
|
||||||
|
int64_t* aRequestCount) {
|
||||||
|
*aRequestCount = mRequestCount;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#undef LOGD
|
#undef LOGD
|
||||||
#undef LOGE
|
#undef LOGE
|
||||||
} // namespace mozilla::contentanalysis
|
} // namespace mozilla::contentanalysis
|
||||||
|
@ -34,6 +34,27 @@ class ContentAnalysisResponse;
|
|||||||
|
|
||||||
namespace mozilla::contentanalysis {
|
namespace mozilla::contentanalysis {
|
||||||
|
|
||||||
|
class ContentAnalysisDiagnosticInfo final
|
||||||
|
: public nsIContentAnalysisDiagnosticInfo {
|
||||||
|
public:
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
NS_DECL_NSICONTENTANALYSISDIAGNOSTICINFO
|
||||||
|
ContentAnalysisDiagnosticInfo(bool aConnectedToAgent, nsString aAgentPath,
|
||||||
|
bool aFailedSignatureVerification,
|
||||||
|
int64_t aRequestCount)
|
||||||
|
: mConnectedToAgent(aConnectedToAgent),
|
||||||
|
mAgentPath(std::move(aAgentPath)),
|
||||||
|
mFailedSignatureVerification(aFailedSignatureVerification),
|
||||||
|
mRequestCount(aRequestCount) {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
~ContentAnalysisDiagnosticInfo() = default;
|
||||||
|
bool mConnectedToAgent;
|
||||||
|
nsString mAgentPath;
|
||||||
|
bool mFailedSignatureVerification;
|
||||||
|
int64_t mRequestCount;
|
||||||
|
};
|
||||||
|
|
||||||
class ContentAnalysisRequest final : public nsIContentAnalysisRequest {
|
class ContentAnalysisRequest final : public nsIContentAnalysisRequest {
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
@ -166,6 +166,15 @@ interface nsIContentAnalysisCallback : nsISupports
|
|||||||
void error(in nsresult aResult);
|
void error(in nsresult aResult);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[scriptable, builtinclass, uuid(a430f6ef-a526-4055-8a82-7741ea757367)]
|
||||||
|
interface nsIContentAnalysisDiagnosticInfo : nsISupports
|
||||||
|
{
|
||||||
|
[infallible] readonly attribute boolean connectedToAgent;
|
||||||
|
readonly attribute AString agentPath;
|
||||||
|
[infallible] readonly attribute boolean failedSignatureVerification;
|
||||||
|
[infallible] readonly attribute long long requestCount;
|
||||||
|
};
|
||||||
|
|
||||||
[scriptable, builtinclass, uuid(61497587-2bba-4a88-acd3-3fbb2cedf163)]
|
[scriptable, builtinclass, uuid(61497587-2bba-4a88-acd3-3fbb2cedf163)]
|
||||||
interface nsIContentAnalysis : nsISupports
|
interface nsIContentAnalysis : nsISupports
|
||||||
{
|
{
|
||||||
@ -254,4 +263,11 @@ interface nsIContentAnalysis : nsISupports
|
|||||||
* given to Gecko on the command line.
|
* given to Gecko on the command line.
|
||||||
*/
|
*/
|
||||||
void testOnlySetCACmdLineArg(in boolean aVal);
|
void testOnlySetCACmdLineArg(in boolean aVal);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets diagnostic information about content analysis. Returns a
|
||||||
|
* nsIContentAnalysisDiagnosticInfo via the returned promise.
|
||||||
|
*/
|
||||||
|
[implicit_jscontext]
|
||||||
|
Promise getDiagnosticInfo();
|
||||||
};
|
};
|
||||||
|
@ -1369,6 +1369,17 @@ var snapshotFormatters = {
|
|||||||
$("remote-debugging-url").textContent = data.url;
|
$("remote-debugging-url").textContent = data.url;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
contentAnalysis(data) {
|
||||||
|
$("content-analysis-active").textContent = data.active;
|
||||||
|
if (data.active) {
|
||||||
|
$("content-analysis-connected-to-agent").textContent = data.connected;
|
||||||
|
$("content-analysis-agent-path").textContent = data.agentPath;
|
||||||
|
$("content-analysis-agent-failed-signature-verification").textContent =
|
||||||
|
data.failedSignatureVerification;
|
||||||
|
$("content-analysis-request-count").textContent = data.requestCount;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
accessibility(data) {
|
accessibility(data) {
|
||||||
$("a11y-activated").textContent = data.isActive;
|
$("a11y-activated").textContent = data.isActive;
|
||||||
$("a11y-force-disabled").textContent = data.forceDisabled || 0;
|
$("a11y-force-disabled").textContent = data.forceDisabled || 0;
|
||||||
|
@ -902,6 +902,38 @@
|
|||||||
</table>
|
</table>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef ANDROID
|
||||||
|
<!-- - - - - - - - - - - - - - - - - - - - - -->
|
||||||
|
|
||||||
|
<h2 class="major-section" id="content-analysis" data-l10n-id="content-analysis-title"/>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th class="column" data-l10n-id="content-analysis-active"/>
|
||||||
|
<td id="content-analysis-active"/>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="column" data-l10n-id="content-analysis-connected-to-agent"/>
|
||||||
|
<td id="content-analysis-connected-to-agent"/>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="column" data-l10n-id="content-analysis-agent-path"/>
|
||||||
|
<td id="content-analysis-agent-path"/>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="column" data-l10n-id="content-analysis-agent-failed-signature-verification"/>
|
||||||
|
<td id="content-analysis-agent-failed-signature-verification"/>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th class="column" data-l10n-id="content-analysis-request-count"/>
|
||||||
|
<td id="content-analysis-request-count"/>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
@ -452,3 +452,15 @@ pointing-device-mouse = Mouse
|
|||||||
pointing-device-touchscreen = Touchscreen
|
pointing-device-touchscreen = Touchscreen
|
||||||
pointing-device-pen-digitizer = Pen Digitizer
|
pointing-device-pen-digitizer = Pen Digitizer
|
||||||
pointing-device-none = No pointing devices
|
pointing-device-none = No pointing devices
|
||||||
|
|
||||||
|
## Content Analysis (DLP)
|
||||||
|
|
||||||
|
# DLP stands for Data Loss Prevention, an industry term for external software
|
||||||
|
# that enterprises can set up to prevent sensitive data from being transferred
|
||||||
|
# to external websites.
|
||||||
|
content-analysis-title = Content Analysis (DLP)
|
||||||
|
content-analysis-active = Active
|
||||||
|
content-analysis-connected-to-agent = Connected to Agent
|
||||||
|
content-analysis-agent-path = Agent Path
|
||||||
|
content-analysis-agent-failed-signature-verification = Agent Failed Signature Verification
|
||||||
|
content-analysis-request-count = Request Count
|
||||||
|
@ -22,6 +22,7 @@ const PREFS_FOR_DISPLAY = [
|
|||||||
"apz.",
|
"apz.",
|
||||||
"browser.cache.",
|
"browser.cache.",
|
||||||
"browser.contentblocking.category",
|
"browser.contentblocking.category",
|
||||||
|
"browser.contentanalysis.",
|
||||||
"browser.display.",
|
"browser.display.",
|
||||||
"browser.download.always_ask_before_handling_new_types",
|
"browser.download.always_ask_before_handling_new_types",
|
||||||
"browser.download.enable_spam_prevention",
|
"browser.download.enable_spam_prevention",
|
||||||
@ -999,6 +1000,24 @@ var dataProviders = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
contentAnalysis: async function contentAnalysis(done) {
|
||||||
|
const contentAnalysis = Cc["@mozilla.org/contentanalysis;1"].getService(
|
||||||
|
Ci.nsIContentAnalysis
|
||||||
|
);
|
||||||
|
if (!contentAnalysis.isActive) {
|
||||||
|
done({ active: false });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let info = await contentAnalysis.getDiagnosticInfo();
|
||||||
|
done({
|
||||||
|
active: true,
|
||||||
|
connected: info.connectedToAgent,
|
||||||
|
agentPath: info.agentPath,
|
||||||
|
failedSignatureVerification: info.failedSignatureVerification,
|
||||||
|
requestCount: info.requestCount,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
async normandy(done) {
|
async normandy(done) {
|
||||||
if (!AppConstants.MOZ_NORMANDY) {
|
if (!AppConstants.MOZ_NORMANDY) {
|
||||||
done();
|
done();
|
||||||
|
@ -1288,6 +1288,27 @@ const SNAPSHOT_SCHEMA = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
contentAnalysis: {
|
||||||
|
type: "object",
|
||||||
|
properties: {
|
||||||
|
active: {
|
||||||
|
required: true,
|
||||||
|
type: "boolean",
|
||||||
|
},
|
||||||
|
connected: {
|
||||||
|
type: "boolean",
|
||||||
|
},
|
||||||
|
agentPath: {
|
||||||
|
type: "string",
|
||||||
|
},
|
||||||
|
failedSignatureVerification: {
|
||||||
|
type: "boolean",
|
||||||
|
},
|
||||||
|
requestCount: {
|
||||||
|
type: "number",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user