| Index: content/browser/speech/speech_recognition_engine.cc
|
| diff --git a/content/browser/speech/speech_recognition_engine.cc b/content/browser/speech/speech_recognition_engine.cc
|
| index efa13f470e73e6a26b8280ea2410f66c53d2ab26..b6bd1d5094bfaf5fced0949a8c1cd59e4390b017 100644
|
| --- a/content/browser/speech/speech_recognition_engine.cc
|
| +++ b/content/browser/speech/speech_recognition_engine.cc
|
| @@ -21,6 +21,7 @@
|
| #include "google_apis/google_api_keys.h"
|
| #include "net/base/escape.h"
|
| #include "net/base/load_flags.h"
|
| +#include "net/traffic_annotation/network_traffic_annotation.h"
|
| #include "net/url_request/http_user_agent_settings.h"
|
| #include "net/url_request/url_fetcher.h"
|
| #include "net/url_request/url_request_context.h"
|
| @@ -337,8 +338,48 @@ SpeechRecognitionEngine::ConnectBothStreams(const FSMEventArgs&) {
|
| std::string(kDownstreamUrl) +
|
| base::JoinString(downstream_args, "&"));
|
|
|
| - downstream_fetcher_ = URLFetcher::Create(
|
| - kDownstreamUrlFetcherIdForTesting, downstream_url, URLFetcher::GET, this);
|
| + net::NetworkTrafficAnnotationTag downstream_traffic_annotation =
|
| + net::DefineNetworkTrafficAnnotation("speech_recognition_downstream", R"(
|
| + semantics {
|
| + sender: "Speech Recognition"
|
| + description:
|
| + "Chrome provides translation from speech audio recorded with a "
|
| + "microphone to text, by using the Google speech recognition web "
|
| + "service. Audio is sent to Google's servers (upstream) and text is "
|
| + "returned (downstream). This network request (downstream) sends an "
|
| + "id for getting the text response. Then the (upstream) request "
|
| + "sends the audio data along with the id. When the server has "
|
| + "finished processing the audio data and produced a text response, "
|
| + "it replies to this request."
|
| + trigger:
|
| + "The user chooses to start the recognition by clicking the "
|
| + "microphone icon in the Google search field."
|
| + data: "A unique random id for this speech recognition request."
|
| + destination: GOOGLE_OWNED_SERVICE
|
| + }
|
| + policy {
|
| + cookies_allowed: false
|
| + setting:
|
| + "The user must allow the browser to access the microphone in a "
|
| + "permission prompt. This is set per site (hostname pattern). In "
|
| + "the content settings menu, microphone access can be turned off "
|
| + "for all sites and site specific settings can be changed."
|
| + chrome_policy {
|
| + AudioCaptureAllowed {
|
| + policy_options {mode: MANDATORY}
|
| + AudioCaptureAllowed: false
|
| + }
|
| + }
|
| + chrome_policy {
|
| + AudioCaptureAllowedUrls {
|
| + policy_options {mode: MANDATORY}
|
| + AudioCaptureAllowedUrls: {}
|
| + }
|
| + }
|
| + })");
|
| + downstream_fetcher_ =
|
| + URLFetcher::Create(kDownstreamUrlFetcherIdForTesting, downstream_url,
|
| + URLFetcher::GET, this, downstream_traffic_annotation);
|
| downstream_fetcher_->SetRequestContext(url_context_.get());
|
| downstream_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES |
|
| net::LOAD_DO_NOT_SEND_COOKIES |
|
| @@ -393,8 +434,46 @@ SpeechRecognitionEngine::ConnectBothStreams(const FSMEventArgs&) {
|
| std::string(kUpstreamUrl) +
|
| base::JoinString(upstream_args, "&"));
|
|
|
| - upstream_fetcher_ = URLFetcher::Create(kUpstreamUrlFetcherIdForTesting,
|
| - upstream_url, URLFetcher::POST, this);
|
| + net::NetworkTrafficAnnotationTag upstream_traffic_annotation =
|
| + net::DefineNetworkTrafficAnnotation("speech_recognition_upstream", R"(
|
| + semantics {
|
| + sender: "Speech Recognition"
|
| + description:
|
| + "Chrome provides translation from speech audio recorded with a "
|
| + "microphone to text, by using the Google speech recognition web "
|
| + "service. Audio is sent to Google's servers (upstream) and text is "
|
| + "returned (downstream)."
|
| + trigger:
|
| + "The user chooses to start the recognition by clicking the "
|
| + "microphone icon in the Google search field."
|
| + data:
|
| + "Audio recorded with the microphone, and the unique id of "
|
| + "downstream speech recognition request."
|
| + destination: GOOGLE_OWNED_SERVICE
|
| + }
|
| + policy {
|
| + cookies_allowed: false
|
| + setting:
|
| + "The user must allow the browser to access the microphone in a "
|
| + "permission prompt. This is set per site (hostname pattern). In "
|
| + "the content settings menu, microphone access can be turned off "
|
| + "for all sites and site specific settings can be changed."
|
| + chrome_policy {
|
| + AudioCaptureAllowed {
|
| + policy_options {mode: MANDATORY}
|
| + AudioCaptureAllowed: false
|
| + }
|
| + }
|
| + chrome_policy {
|
| + AudioCaptureAllowedUrls {
|
| + policy_options {mode: MANDATORY}
|
| + AudioCaptureAllowedUrls: {}
|
| + }
|
| + }
|
| + })");
|
| + upstream_fetcher_ =
|
| + URLFetcher::Create(kUpstreamUrlFetcherIdForTesting, upstream_url,
|
| + URLFetcher::POST, this, upstream_traffic_annotation);
|
| if (use_framed_post_data_)
|
| upstream_fetcher_->SetChunkedUpload("application/octet-stream");
|
| else
|
|
|