Merge lp:~abreu-alexandre/oxide/donottrack into lp:~oxide-developers/oxide/oxide.trunk

Proposed by Alexandre Abreu
Status: Merged
Merged at revision: 1159
Proposed branch: lp:~abreu-alexandre/oxide/donottrack
Merge into: lp:~oxide-developers/oxide/oxide.trunk
Diff against target: 438 lines (+212/-1) (has conflicts)
13 files modified
qt/core/browser/oxide_qt_web_context.cc (+24/-0)
qt/core/browser/oxide_qt_web_context.h (+3/-0)
qt/core/glue/oxide_qt_web_context_proxy.h (+3/-0)
qt/quick/api/oxideqquickwebcontext.cc (+19/-0)
qt/quick/api/oxideqquickwebcontext_p.h (+6/-0)
qt/tests/qmltests/api/tst_WebContext_doNotTrack.py (+18/-0)
qt/tests/qmltests/api/tst_WebContext_doNotTrack.qml (+74/-0)
shared/browser/oxide_browser_context.cc (+33/-1)
shared/browser/oxide_browser_context.h (+5/-0)
shared/browser/oxide_browser_context_observer.h (+2/-0)
shared/browser/oxide_network_delegate.cc (+10/-0)
shared/browser/oxide_web_view_contents_helper.cc (+14/-0)
shared/browser/oxide_web_view_contents_helper.h (+1/-0)
Text conflict in qt/core/browser/oxide_qt_web_context.cc
To merge this branch: bzr merge lp:~abreu-alexandre/oxide/donottrack
Reviewer Review Type Date Requested Status
Chris Coulson Approve
Review via email: mp+261766@code.launchpad.net

Commit message

Handle do not track

Description of the change

Handle do not track

To post a comment you must log in.
lp:~abreu-alexandre/oxide/donottrack updated
1126. By Chris Coulson

Bump Chromium rev to 45.0.2427.7

1127. By Chris Coulson

Persist media device permissions for the life of WebContext

1128. By Chris Coulson

Make ContentBrowserClient / ContentRendererClient memebers of ContentMainDelegate like ContentClient already is

1129. By Chris Coulson

Pass the application locale to ui::ResourceBundle::InitSharedInstanceWithLocale. Because we don't build with glib support, it's unable to detect the system locale and depends on a preferred one being passed

1130. By Chris Coulson

Convert UserScriptMaster in to a KeyedService

1131. By Chris Coulson

Create a single TestWebContext in tst_WebView_save_restore_state.qml

1132. By Chris Coulson

Don't allow QObjects to be passed to WebContextDelegateWorker

1133. By Chris Coulson

Add justifications around less-obvious uses of base::Unretained

1134. By Olivier Tilloy

Fix save/restore unit tests.

1135. By Chris Coulson

Bump Chromium rev to 45.0.2431.0

1136. By Chris Coulson

Fix an intermittent test failure

1137. By Chris Coulson

Ensure we have a WebScopedMicrotaskSuppression instance on the stack when we call in to V8

1138. By Chris Coulson

Add a basic editorconfig file - you can get editorconfig plugins for various editors from http://editorconfig.org/. This avoids having to turn on support for modelines, which is disabled in some editors (eg, vim) for security reasons

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

Thanks, I've left some comments inline.

Also, the test is missing a few bits:

- It should verify that the default is off.
- It should check that the notify signal is emitted when you toggle it.
- What happens to window.navigator.doNotTrack if you change the setting without reloading the page? Does it update automatically? If it does, then that should be tested.

review: Needs Fixing
lp:~abreu-alexandre/oxide/donottrack updated
1139. By Chris Coulson

Some updates for the content script messaging:
- The payload is no longer converted to a string for the wire - instead, we use base::Value directly.
- As a consequence, on the renderer side, we now use content::V8ValueConverter to convert the payload from v8::Value to base::Value. This means we can get rid of the hacky script we compile for each script context, just to call JSON.stringify.
- On the browser-side, we now convert from base::Value directly to QVariant using a custom converter. There is no longer a dependency on QJsonDocument.
- As a hardening measure, our converter on the browser side protects against excessive recursion that would otherwise exhaust stack space.
- The "args" parameter for script messages is deprecated - use "payload" instead. "args" never really made sense as it implies it's always a list, and is there as a consequence of this API being put together in haste to get unit tests working.
- Message payloads no longer have to be JSON arrays or objects - they can be any primitive that can be represented in JSON.
- The script message dispatcher on the browser side is no longer a BrowserMessageFilter running on the IO thread, but instead a WebContentsObserver. We can do that now since it has an API to expose the source RenderFrameHost.

1140. By Chris Coulson

Use the preferred allow() method for the geolocation permission tests (we still retain one test for the deprecated accept() method though)

1141. By Chris Coulson

Store TestApiHost in TestWebView, keyed by WebFrame

1142. By Chris Coulson

Add TestUtils.waitFor, so that we can stop duplicating the same function for tests that don't use TestWebView

1143. By Chris Coulson

Bump depot_tools to c1ae89ecd635abfea2d94e5b49c7d92f49f28f22

1144. By Chris Coulson

Improve script messaging tests

1145. By Chris Coulson

LP: #1466208

1146. By Chris Coulson

Remove a spurious console.log

1147. By Chris Coulson

Correctly detect when we are running on Mir/Mesa

1148. By Chris Coulson

Assume that the display is already initialized

1149. By Chris Coulson

Bump Chromium rev to 45.0.2438.3

1150. By Chris Coulson

Add WebContext.userAgentOverrides API, which is a replacement for WebContext.userAgentOverrideDelegate. The new API allows applications to provide a list of regular expressions and user agent overrides as opposed to providing a JS worker that we call in to to ask for a user agent string. This allows us to stop relying on synchronous IPC to the browser

1151. By Chris Coulson

We can actually lazyily create UserAgentSettings. RenderProcessInitializer will create it when the first render process starts anyway

1152. By Alexandre Abreu

Fixes

Revision history for this message
Alexandre Abreu (abreu-alexandre) wrote :

All comments have been addressed

Revision history for this message
Chris Coulson (chrisccoulson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'qt/core/browser/oxide_qt_web_context.cc'
--- qt/core/browser/oxide_qt_web_context.cc 2015-07-01 09:56:23 +0000
+++ qt/core/browser/oxide_qt_web_context.cc 2015-07-02 14:03:46 +0000
@@ -144,9 +144,15 @@
144 session_cookie_mode(content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES),144 session_cookie_mode(content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES),
145 popup_blocker_enabled(true),145 popup_blocker_enabled(true),
146 devtools_enabled(false),146 devtools_enabled(false),
147<<<<<<< TREE
147 devtools_port(-1),148 devtools_port(-1),
148 legacy_user_agent_override_enabled(false) {}149 legacy_user_agent_override_enabled(false) {}
149150
151=======
152 devtools_port(kDefaultDevtoolsPort),
153 legacy_user_agent_override_enabled(false),
154 do_not_track(false) {}
155>>>>>>> MERGE-SOURCE
150 std::string product;156 std::string product;
151 std::string user_agent;157 std::string user_agent;
152 base::FilePath data_path;158 base::FilePath data_path;
@@ -164,6 +170,7 @@
164 std::string default_video_capture_device_id;170 std::string default_video_capture_device_id;
165 std::vector<UserAgentSettings::UserAgentOverride> user_agent_overrides;171 std::vector<UserAgentSettings::UserAgentOverride> user_agent_overrides;
166 bool legacy_user_agent_override_enabled;172 bool legacy_user_agent_override_enabled;
173 bool do_not_track;
167};174};
168175
169class SetCookiesContext : public base::RefCounted<SetCookiesContext> {176class SetCookiesContext : public base::RefCounted<SetCookiesContext> {
@@ -550,6 +557,7 @@
550557
551 context_->SetCookiePolicy(construct_props_->cookie_policy);558 context_->SetCookiePolicy(construct_props_->cookie_policy);
552 context_->SetIsPopupBlockerEnabled(construct_props_->popup_blocker_enabled);559 context_->SetIsPopupBlockerEnabled(construct_props_->popup_blocker_enabled);
560 context_->SetDoNotTrack(construct_props_->do_not_track);
553561
554 MediaCaptureDevicesContext* dc =562 MediaCaptureDevicesContext* dc =
555 MediaCaptureDevicesContext::Get(context_.get());563 MediaCaptureDevicesContext::Get(context_.get());
@@ -1074,5 +1082,21 @@
1074 client_->DefaultVideoCaptureDeviceChanged();1082 client_->DefaultVideoCaptureDeviceChanged();
1075}1083}
10761084
1085bool WebContext::doNotTrack() const {
1086 if (IsInitialized()) {
1087 return context_->GetDoNotTrack();
1088 }
1089
1090 return construct_props_->do_not_track;
1091}
1092
1093void WebContext::setDoNotTrack(bool dnt) {
1094 if (IsInitialized()) {
1095 context_->SetDoNotTrack(dnt);
1096 } else {
1097 construct_props_->do_not_track = dnt;
1098 }
1099}
1100
1077} // namespace qt1101} // namespace qt
1078} // namespace oxide1102} // namespace oxide
10791103
=== modified file 'qt/core/browser/oxide_qt_web_context.h'
--- qt/core/browser/oxide_qt_web_context.h 2015-06-29 17:52:40 +0000
+++ qt/core/browser/oxide_qt_web_context.h 2015-07-02 14:03:46 +0000
@@ -148,6 +148,9 @@
148 void clearTemporarySavedPermissionStatuses() override;148 void clearTemporarySavedPermissionStatuses() override;
149 void setLegacyUserAgentOverrideEnabled(bool enabled) override;149 void setLegacyUserAgentOverrideEnabled(bool enabled) override;
150150
151 bool doNotTrack() const override;
152 void setDoNotTrack(bool dnt) override;
153
151 // oxide::MediaCaptureDevicesContextClient implementation154 // oxide::MediaCaptureDevicesContextClient implementation
152 void DefaultAudioDeviceChanged() override;155 void DefaultAudioDeviceChanged() override;
153 void DefaultVideoDeviceChanged() override;156 void DefaultVideoDeviceChanged() override;
154157
=== modified file 'qt/core/glue/oxide_qt_web_context_proxy.h'
--- qt/core/glue/oxide_qt_web_context_proxy.h 2015-07-01 09:56:23 +0000
+++ qt/core/glue/oxide_qt_web_context_proxy.h 2015-07-02 14:03:46 +0000
@@ -138,6 +138,9 @@
138 virtual void clearTemporarySavedPermissionStatuses() = 0;138 virtual void clearTemporarySavedPermissionStatuses() = 0;
139139
140 virtual void setLegacyUserAgentOverrideEnabled(bool enabled) = 0;140 virtual void setLegacyUserAgentOverrideEnabled(bool enabled) = 0;
141
142 virtual bool doNotTrack() const = 0;
143 virtual void setDoNotTrack(bool dnt) = 0;
141};144};
142145
143} // namespace qt146} // namespace qt
144147
=== modified file 'qt/quick/api/oxideqquickwebcontext.cc'
--- qt/quick/api/oxideqquickwebcontext.cc 2015-07-01 09:56:23 +0000
+++ qt/quick/api/oxideqquickwebcontext.cc 2015-07-02 14:03:46 +0000
@@ -1119,6 +1119,7 @@
1119 // if the actual device is removed1119 // if the actual device is removed
1120}1120}
11211121
1122
1122QVariantList OxideQQuickWebContext::userAgentOverrides() const {1123QVariantList OxideQQuickWebContext::userAgentOverrides() const {
1123 Q_D(const OxideQQuickWebContext);1124 Q_D(const OxideQQuickWebContext);
11241125
@@ -1133,6 +1134,12 @@
1133 return rv;1134 return rv;
1134}1135}
11351136
1137bool OxideQQuickWebContext::doNotTrack() const {
1138 Q_D(const OxideQQuickWebContext);
1139
1140 return d->proxy()->doNotTrack();
1141}
1142
1136void OxideQQuickWebContext::setUserAgentOverrides(1143void OxideQQuickWebContext::setUserAgentOverrides(
1137 const QVariantList& overrides) {1144 const QVariantList& overrides) {
1138 Q_D(OxideQQuickWebContext);1145 Q_D(OxideQQuickWebContext);
@@ -1160,4 +1167,16 @@
1160 emit userAgentOverridesChanged();1167 emit userAgentOverridesChanged();
1161}1168}
11621169
1170void OxideQQuickWebContext::setDoNotTrack(bool dnt) {
1171 Q_D(OxideQQuickWebContext);
1172
1173 if (doNotTrack() == dnt) {
1174 return;
1175 }
1176
1177 d->proxy()->setDoNotTrack(dnt);
1178
1179 emit doNotTrackEnabledChanged();
1180}
1181
1163#include "moc_oxideqquickwebcontext_p.cpp"1182#include "moc_oxideqquickwebcontext_p.cpp"
11641183
=== modified file 'qt/quick/api/oxideqquickwebcontext_p.h'
--- qt/quick/api/oxideqquickwebcontext_p.h 2015-06-29 16:47:46 +0000
+++ qt/quick/api/oxideqquickwebcontext_p.h 2015-07-02 14:03:46 +0000
@@ -73,6 +73,8 @@
7373
74 Q_PROPERTY(QVariantList userAgentOverrides READ userAgentOverrides WRITE setUserAgentOverrides NOTIFY userAgentOverridesChanged REVISION 3)74 Q_PROPERTY(QVariantList userAgentOverrides READ userAgentOverrides WRITE setUserAgentOverrides NOTIFY userAgentOverridesChanged REVISION 3)
7575
76 Q_PROPERTY(bool doNotTrackEnabled READ doNotTrack WRITE setDoNotTrack NOTIFY doNotTrackEnabledChanged REVISION 3)
77
76 Q_ENUMS(CookiePolicy)78 Q_ENUMS(CookiePolicy)
77 Q_ENUMS(SessionCookieMode)79 Q_ENUMS(SessionCookieMode)
7880
@@ -169,6 +171,9 @@
169 QVariantList userAgentOverrides() const;171 QVariantList userAgentOverrides() const;
170 void setUserAgentOverrides(const QVariantList& overrides);172 void setUserAgentOverrides(const QVariantList& overrides);
171173
174 bool doNotTrack() const;
175 void setDoNotTrack(bool dnt);
176
172 Q_SIGNALS:177 Q_SIGNALS:
173 void productChanged();178 void productChanged();
174 void userAgentChanged();179 void userAgentChanged();
@@ -191,6 +196,7 @@
191 Q_REVISION(3) void defaultAudioCaptureDeviceIdChanged();196 Q_REVISION(3) void defaultAudioCaptureDeviceIdChanged();
192 Q_REVISION(3) void defaultVideoCaptureDeviceIdChanged();197 Q_REVISION(3) void defaultVideoCaptureDeviceIdChanged();
193 Q_REVISION(3) void userAgentOverridesChanged();198 Q_REVISION(3) void userAgentOverridesChanged();
199 Q_REVISION(3) void doNotTrackEnabledChanged();
194200
195 private:201 private:
196 Q_PRIVATE_SLOT(d_func(), void userScriptUpdated());202 Q_PRIVATE_SLOT(d_func(), void userScriptUpdated());
197203
=== added file 'qt/tests/qmltests/api/tst_WebContext_doNotTrack.py'
--- qt/tests/qmltests/api/tst_WebContext_doNotTrack.py 1970-01-01 00:00:00 +0000
+++ qt/tests/qmltests/api/tst_WebContext_doNotTrack.py 2015-07-02 14:03:46 +0000
@@ -0,0 +1,18 @@
1from cStringIO import StringIO
2
3def handler(request):
4 request.send_response(200)
5 request.send_header("Content-type", "text/html")
6
7 html = StringIO()
8 for header in request.headers:
9 print header
10 html.write(
11 "<html><body><div id='dnt'>{}</div></body></html>".format(
12 "1" if 'DNT' in request.headers and request.headers['DNT'] == '1' else "0"))
13
14 request.send_header("Content-Length", html.tell())
15 request.send_header("Cache-Control", "no-cache")
16 request.end_headers()
17
18 request.wfile.write(html.getvalue())
019
=== added file 'qt/tests/qmltests/api/tst_WebContext_doNotTrack.qml'
--- qt/tests/qmltests/api/tst_WebContext_doNotTrack.qml 1970-01-01 00:00:00 +0000
+++ qt/tests/qmltests/api/tst_WebContext_doNotTrack.qml 2015-07-02 14:03:46 +0000
@@ -0,0 +1,74 @@
1import QtQuick 2.0
2import QtTest 1.0
3import com.canonical.Oxide 1.9
4import com.canonical.Oxide.Testing 1.0
5
6TestWebView {
7 id: webView
8
9 focus: true
10
11 width: 200
12 height: 200
13
14 SignalSpy {
15 id: dntSignalSpy
16 target: webView.context
17 signalName: "doNotTrackEnabledChanged"
18 }
19
20 TestCase {
21 id: test
22 name: "WebContext_doNotTrack"
23 when: windowShown
24
25 function init() {
26 dntSignalSpy.clear();
27 }
28
29 function test_dnt_data() {
30 return [
31 {expectedHeaderDnt: "0", expectedNavigatorDnt: "0"}, /* default */
32 {expectedHeaderDnt: "0", expectedNavigatorDnt: "0", dnt: false},
33 {expectedHeaderDnt: "1", expectedNavigatorDnt: "1", dnt: true}
34 ]
35 }
36
37 function test_dnt(data) {
38 if (data.dnt != null) {
39 webView.context.doNotTrackEnabled = data.dnt
40 }
41
42 webView.url = "http://testsuite/tst_WebContext_doNotTrack.py";
43 verify(webView.waitForLoadSucceeded(),
44 "Timed out waiting for successful load");
45
46 compare(webView.getTestApi().evaluateCode(
47 "document.querySelector(\"#dnt\").innerHTML"),
48 data.expectedHeaderDnt);
49 compare(webView.getTestApi().evaluateCode(
50 "window.navigator.doNotTrack && window.navigator.doNotTrack === '1' ? '1' : '0'"),
51 data.expectedNavigatorDnt);
52 }
53
54 function test_dntNavigatorUpdate(data) {
55 webView.context.doNotTrackEnabled = false
56
57 webView.url = "http://testsuite/tst_WebContext_doNotTrack.py";
58 verify(webView.waitForLoadSucceeded(),
59 "Timed out waiting for successful load");
60
61 compare(webView.getTestApi().evaluateCode(
62 "window.navigator.doNotTrack && window.navigator.doNotTrack === '1' ? '1' : '0'"),
63 "0");
64
65 webView.context.doNotTrackEnabled = true;
66
67 compare(webView.getTestApi().evaluateCode(
68 "window.navigator.doNotTrack && window.navigator.doNotTrack === '1' ? '1' : '0'"),
69 "1");
70
71 compare(dntSignalSpy.count, 2, "Should have had 1 doNotTrackEnabledChanged signal");
72 }
73 }
74}
075
=== modified file 'shared/browser/oxide_browser_context.cc'
--- shared/browser/oxide_browser_context.cc 2015-07-01 12:25:41 +0000
+++ shared/browser/oxide_browser_context.cc 2015-07-02 14:03:46 +0000
@@ -191,7 +191,8 @@
191 session_cookie_mode(params.session_cookie_mode),191 session_cookie_mode(params.session_cookie_mode),
192 popup_blocker_enabled(true),192 popup_blocker_enabled(true),
193 host_mapping_rules(params.host_mapping_rules),193 host_mapping_rules(params.host_mapping_rules),
194 user_agent_settings(new UserAgentSettingsIOData(context)) {}194 user_agent_settings(new UserAgentSettingsIOData(context)),
195 do_not_track(false) {}
195196
196 mutable base::Lock lock;197 mutable base::Lock lock;
197198
@@ -207,6 +208,8 @@
207208
208 scoped_ptr<UserAgentSettingsIOData> user_agent_settings;209 scoped_ptr<UserAgentSettingsIOData> user_agent_settings;
209210
211 bool do_not_track;
212
210 scoped_refptr<BrowserContextDelegate> delegate;213 scoped_refptr<BrowserContextDelegate> delegate;
211};214};
212215
@@ -343,6 +346,12 @@
343 return max_cache_size_hint;346 return max_cache_size_hint;
344}347}
345348
349bool BrowserContextIOData::GetDoNotTrack() const {
350 const BrowserContextSharedIOData& data = GetSharedData();
351 base::AutoLock lock(data.lock);
352 return data.do_not_track;
353}
354
346URLRequestContext* BrowserContextIOData::CreateMainRequestContext(355URLRequestContext* BrowserContextIOData::CreateMainRequestContext(
347 content::ProtocolHandlerMap& protocol_handlers,356 content::ProtocolHandlerMap& protocol_handlers,
348 content::URLRequestInterceptorScopedVector request_interceptors) {357 content::URLRequestInterceptorScopedVector request_interceptors) {
@@ -869,10 +878,33 @@
869 return io_data()->cookie_store_;878 return io_data()->cookie_store_;
870}879}
871880
881
872TemporarySavedPermissionContext*882TemporarySavedPermissionContext*
873BrowserContext::GetTemporarySavedPermissionContext() const {883BrowserContext::GetTemporarySavedPermissionContext() const {
874 DCHECK(CalledOnValidThread());884 DCHECK(CalledOnValidThread());
875 return io_data()->GetTemporarySavedPermissionContext();885 return io_data()->GetTemporarySavedPermissionContext();
876}886}
877887
888bool BrowserContext::GetDoNotTrack() const {
889 DCHECK(CalledOnValidThread());
890 return io_data()->GetSharedData().do_not_track;
891}
892
893void BrowserContext::SetDoNotTrack(bool dnt) {
894 DCHECK(CalledOnValidThread());
895
896 BrowserContextSharedIOData& data = io_data()->GetSharedData();
897 base::AutoLock lock(data.lock);
898 data.do_not_track = dnt;
899
900 FOR_EACH_OBSERVER(BrowserContextObserver,
901 GetOriginalContext()->observers_,
902 NotifyDoNotTrackChanged());
903 if (HasOffTheRecordContext()) {
904 FOR_EACH_OBSERVER(BrowserContextObserver,
905 GetOffTheRecordContext()->observers_,
906 NotifyDoNotTrackChanged());
907 }
908}
909
878} // namespace oxide910} // namespace oxide
879911
=== modified file 'shared/browser/oxide_browser_context.h'
--- shared/browser/oxide_browser_context.h 2015-07-01 09:56:23 +0000
+++ shared/browser/oxide_browser_context.h 2015-07-02 14:03:46 +0000
@@ -84,6 +84,8 @@
84 base::FilePath GetCachePath() const;84 base::FilePath GetCachePath() const;
85 int GetMaxCacheSizeHint() const;85 int GetMaxCacheSizeHint() const;
8686
87 bool GetDoNotTrack() const;
88
87 virtual bool IsOffTheRecord() const = 0;89 virtual bool IsOffTheRecord() const = 0;
8890
89 URLRequestContext* CreateMainRequestContext(91 URLRequestContext* CreateMainRequestContext(
@@ -208,6 +210,9 @@
208210
209 const std::vector<std::string>& GetHostMappingRules() const;211 const std::vector<std::string>& GetHostMappingRules() const;
210212
213 bool GetDoNotTrack() const;
214 void SetDoNotTrack(bool dnt);
215
211 // from content::BrowserContext216 // from content::BrowserContext
212 content::ResourceContext* GetResourceContext() override;217 content::ResourceContext* GetResourceContext() override;
213218
214219
=== modified file 'shared/browser/oxide_browser_context_observer.h'
--- shared/browser/oxide_browser_context_observer.h 2014-06-02 15:06:30 +0000
+++ shared/browser/oxide_browser_context_observer.h 2015-07-02 14:03:46 +0000
@@ -30,6 +30,8 @@
3030
31 virtual void NotifyPopupBlockerEnabledChanged() {}31 virtual void NotifyPopupBlockerEnabledChanged() {}
3232
33 virtual void NotifyDoNotTrackChanged() {}
34
33 protected:35 protected:
34 BrowserContextObserver();36 BrowserContextObserver();
35 BrowserContextObserver(BrowserContext* context);37 BrowserContextObserver(BrowserContext* context);
3638
=== modified file 'shared/browser/oxide_network_delegate.cc'
--- shared/browser/oxide_network_delegate.cc 2015-06-29 17:14:55 +0000
+++ shared/browser/oxide_network_delegate.cc 2015-07-02 14:03:46 +0000
@@ -26,6 +26,10 @@
2626
27namespace oxide {27namespace oxide {
2828
29namespace {
30const char kDoNotTrackHeaderName[] = "DNT";
31}
32
29int NetworkDelegate::OnBeforeURLRequest(33int NetworkDelegate::OnBeforeURLRequest(
30 net::URLRequest* request,34 net::URLRequest* request,
31 const net::CompletionCallback& callback,35 const net::CompletionCallback& callback,
@@ -35,6 +39,12 @@
35 return net::OK;39 return net::OK;
36 }40 }
3741
42 bool do_not_track = context_->GetDoNotTrack();
43 if (do_not_track) {
44 request->SetExtraRequestHeaderByName(
45 kDoNotTrackHeaderName, "1", true);
46 }
47
38 return delegate->OnBeforeURLRequest(request, callback, new_url);48 return delegate->OnBeforeURLRequest(request, callback, new_url);
39}49}
4050
4151
=== modified file 'shared/browser/oxide_web_view_contents_helper.cc'
--- shared/browser/oxide_web_view_contents_helper.cc 2015-06-03 09:51:37 +0000
+++ shared/browser/oxide_web_view_contents_helper.cc 2015-07-02 14:03:46 +0000
@@ -59,6 +59,19 @@
59 UpdateWebPreferences();59 UpdateWebPreferences();
60}60}
6161
62void WebViewContentsHelper::NotifyDoNotTrackChanged() {
63 content::RendererPreferences* renderer_prefs =
64 web_contents_->GetMutableRendererPrefs();
65 renderer_prefs->enable_do_not_track = context_->GetDoNotTrack();
66
67 // Send the new override string to the renderer.
68 content::RenderViewHost* rvh = web_contents_->GetRenderViewHost();
69 if (!rvh) {
70 return;
71 }
72 rvh->SyncRendererPrefs();
73}
74
62WebViewContentsHelper::WebViewContentsHelper(content::WebContents* contents,75WebViewContentsHelper::WebViewContentsHelper(content::WebContents* contents,
63 content::WebContents* opener)76 content::WebContents* opener)
64 : BrowserContextObserver(77 : BrowserContextObserver(
@@ -73,6 +86,7 @@
73 content::RendererPreferences* renderer_prefs =86 content::RendererPreferences* renderer_prefs =
74 web_contents_->GetMutableRendererPrefs();87 web_contents_->GetMutableRendererPrefs();
75 renderer_prefs->browser_handles_non_local_top_level_requests = true;88 renderer_prefs->browser_handles_non_local_top_level_requests = true;
89 renderer_prefs->enable_do_not_track = context_->GetDoNotTrack();
7690
77 content::RenderViewHost* rvh = web_contents_->GetRenderViewHost();91 content::RenderViewHost* rvh = web_contents_->GetRenderViewHost();
78 if (rvh) {92 if (rvh) {
7993
=== modified file 'shared/browser/oxide_web_view_contents_helper.h'
--- shared/browser/oxide_web_view_contents_helper.h 2015-06-03 09:51:37 +0000
+++ shared/browser/oxide_web_view_contents_helper.h 2015-07-02 14:03:46 +0000
@@ -62,6 +62,7 @@
6262
63 // BrowserContextObserver implementation63 // BrowserContextObserver implementation
64 void NotifyPopupBlockerEnabledChanged() final;64 void NotifyPopupBlockerEnabledChanged() final;
65 void NotifyDoNotTrackChanged() final;
6566
66 // WebPreferencesObserver implementation67 // WebPreferencesObserver implementation
67 void WebPreferencesValueChanged() final;68 void WebPreferencesValueChanged() final;

Subscribers

People subscribed via source and target branches