OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/automation/automation_util.h" | 5 #include "chrome/browser/automation/automation_util.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "chrome/browser/ui/browser_list.h" | 26 #include "chrome/browser/ui/browser_list.h" |
27 #include "chrome/browser/ui/browser_tabstrip.h" | 27 #include "chrome/browser/ui/browser_tabstrip.h" |
28 #include "chrome/browser/ui/tab_contents/tab_contents.h" | 28 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
29 #include "chrome/browser/view_type_utils.h" | 29 #include "chrome/browser/view_type_utils.h" |
30 #include "chrome/common/automation_id.h" | 30 #include "chrome/common/automation_id.h" |
31 #include "chrome/common/extensions/extension.h" | 31 #include "chrome/common/extensions/extension.h" |
32 #include "content/public/browser/browser_thread.h" | 32 #include "content/public/browser/browser_thread.h" |
33 #include "content/public/browser/render_process_host.h" | 33 #include "content/public/browser/render_process_host.h" |
34 #include "content/public/browser/render_view_host.h" | 34 #include "content/public/browser/render_view_host.h" |
35 #include "content/public/browser/web_contents.h" | 35 #include "content/public/browser/web_contents.h" |
| 36 #include "net/cookies/canonical_cookie.h" |
36 #include "net/cookies/cookie_monster.h" | 37 #include "net/cookies/cookie_monster.h" |
37 #include "net/cookies/cookie_store.h" | 38 #include "net/cookies/cookie_store.h" |
38 #include "net/url_request/url_request_context.h" | 39 #include "net/url_request/url_request_context.h" |
39 #include "net/url_request/url_request_context_getter.h" | 40 #include "net/url_request/url_request_context_getter.h" |
40 | 41 |
41 using content::BrowserThread; | 42 using content::BrowserThread; |
42 using content::RenderViewHost; | 43 using content::RenderViewHost; |
43 using content::WebContents; | 44 using content::WebContents; |
44 | 45 |
45 namespace { | 46 namespace { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 base::WaitableEvent* event, | 95 base::WaitableEvent* event, |
95 bool* success) { | 96 bool* success) { |
96 context_getter->GetURLRequestContext()->cookie_store()-> | 97 context_getter->GetURLRequestContext()->cookie_store()-> |
97 SetCookieWithOptionsAsync( | 98 SetCookieWithOptionsAsync( |
98 url, value, net::CookieOptions(), | 99 url, value, net::CookieOptions(), |
99 base::Bind(&SetCookieCallback, event, success)); | 100 base::Bind(&SetCookieCallback, event, success)); |
100 } | 101 } |
101 | 102 |
102 void SetCookieWithDetailsOnIOThread( | 103 void SetCookieWithDetailsOnIOThread( |
103 const GURL& url, | 104 const GURL& url, |
104 const net::CookieMonster::CanonicalCookie& cookie, | 105 const net::CanonicalCookie& cookie, |
105 const std::string& original_domain, | 106 const std::string& original_domain, |
106 const scoped_refptr<net::URLRequestContextGetter>& context_getter, | 107 const scoped_refptr<net::URLRequestContextGetter>& context_getter, |
107 base::WaitableEvent* event, | 108 base::WaitableEvent* event, |
108 bool* success) { | 109 bool* success) { |
109 net::CookieMonster* cookie_monster = | 110 net::CookieMonster* cookie_monster = |
110 context_getter->GetURLRequestContext()->cookie_store()-> | 111 context_getter->GetURLRequestContext()->cookie_store()-> |
111 GetCookieMonster(); | 112 GetCookieMonster(); |
112 cookie_monster->SetCookieWithDetailsAsync( | 113 cookie_monster->SetCookieWithDetailsAsync( |
113 url, cookie.Name(), cookie.Value(), original_domain, | 114 url, cookie.Name(), cookie.Value(), original_domain, |
114 cookie.Path(), cookie.ExpiryDate(), cookie.IsSecure(), | 115 cookie.Path(), cookie.ExpiryDate(), cookie.IsSecure(), |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 base::Closure task = base::Bind(&GetCanonicalCookiesOnIOThread, GURL(url), | 249 base::Closure task = base::Bind(&GetCanonicalCookiesOnIOThread, GURL(url), |
249 context_getter, &event, &cookie_list); | 250 context_getter, &event, &cookie_list); |
250 if (!BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, task)) { | 251 if (!BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, task)) { |
251 reply.SendError("Couldn't post task to get the cookies"); | 252 reply.SendError("Couldn't post task to get the cookies"); |
252 return; | 253 return; |
253 } | 254 } |
254 event.Wait(); | 255 event.Wait(); |
255 | 256 |
256 ListValue* list = new ListValue(); | 257 ListValue* list = new ListValue(); |
257 for (size_t i = 0; i < cookie_list.size(); ++i) { | 258 for (size_t i = 0; i < cookie_list.size(); ++i) { |
258 const net::CookieMonster::CanonicalCookie& cookie = cookie_list[i]; | 259 const net::CanonicalCookie& cookie = cookie_list[i]; |
259 DictionaryValue* cookie_dict = new DictionaryValue(); | 260 DictionaryValue* cookie_dict = new DictionaryValue(); |
260 cookie_dict->SetString("name", cookie.Name()); | 261 cookie_dict->SetString("name", cookie.Name()); |
261 cookie_dict->SetString("value", cookie.Value()); | 262 cookie_dict->SetString("value", cookie.Value()); |
262 cookie_dict->SetString("path", cookie.Path()); | 263 cookie_dict->SetString("path", cookie.Path()); |
263 cookie_dict->SetString("domain", cookie.Domain()); | 264 cookie_dict->SetString("domain", cookie.Domain()); |
264 cookie_dict->SetBoolean("secure", cookie.IsSecure()); | 265 cookie_dict->SetBoolean("secure", cookie.IsSecure()); |
265 cookie_dict->SetBoolean("http_only", cookie.IsHttpOnly()); | 266 cookie_dict->SetBoolean("http_only", cookie.IsHttpOnly()); |
266 if (cookie.IsPersistent()) | 267 if (cookie.IsPersistent()) |
267 cookie_dict->SetDouble("expiry", cookie.ExpiryDate().ToDoubleT()); | 268 cookie_dict->SetDouble("expiry", cookie.ExpiryDate().ToDoubleT()); |
268 list->Append(cookie_dict); | 269 list->Append(cookie_dict); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 reply.SendError("optional 'expiry' invalid"); | 358 reply.SendError("optional 'expiry' invalid"); |
358 return; | 359 return; |
359 } | 360 } |
360 } | 361 } |
361 if (cookie_dict->HasKey("http_only") && | 362 if (cookie_dict->HasKey("http_only") && |
362 !cookie_dict->GetBoolean("http_only", &http_only)) { | 363 !cookie_dict->GetBoolean("http_only", &http_only)) { |
363 reply.SendError("optional 'http_only' invalid"); | 364 reply.SendError("optional 'http_only' invalid"); |
364 return; | 365 return; |
365 } | 366 } |
366 | 367 |
367 scoped_ptr<net::CookieMonster::CanonicalCookie> cookie( | 368 scoped_ptr<net::CanonicalCookie> cookie( |
368 net::CookieMonster::CanonicalCookie::Create( | 369 net::CanonicalCookie::Create( |
369 GURL(url), name, value, domain, path, | 370 GURL(url), name, value, domain, path, |
370 mac_key, mac_algorithm, base::Time(), | 371 mac_key, mac_algorithm, base::Time(), |
371 base::Time::FromDoubleT(expiry), secure, http_only)); | 372 base::Time::FromDoubleT(expiry), secure, http_only)); |
372 if (!cookie.get()) { | 373 if (!cookie.get()) { |
373 reply.SendError("given 'cookie' parameters are invalid"); | 374 reply.SendError("given 'cookie' parameters are invalid"); |
374 return; | 375 return; |
375 } | 376 } |
376 | 377 |
377 // Since we may be on the UI thread don't call GetURLRequestContext(). | 378 // Since we may be on the UI thread don't call GetURLRequestContext(). |
378 scoped_refptr<net::URLRequestContextGetter> context_getter = | 379 scoped_refptr<net::URLRequestContextGetter> context_getter = |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 const extensions::Extension* extension; | 556 const extensions::Extension* extension; |
556 return GetExtensionForId(id, profile, &extension); | 557 return GetExtensionForId(id, profile, &extension); |
557 } | 558 } |
558 default: | 559 default: |
559 break; | 560 break; |
560 } | 561 } |
561 return false; | 562 return false; |
562 } | 563 } |
563 | 564 |
564 } // namespace automation_util | 565 } // namespace automation_util |
OLD | NEW |