| 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 // Implements the Chrome Extensions Cookies API. | 5 // Implements the Chrome Extensions Cookies API. |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/api/cookies/cookies_api.h" | 7 #include "chrome/browser/extensions/api/cookies/cookies_api.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 bool rv = BrowserThread::PostTask( | 225 bool rv = BrowserThread::PostTask( |
| 226 BrowserThread::IO, FROM_HERE, | 226 BrowserThread::IO, FROM_HERE, |
| 227 base::Bind(&CookiesGetFunction::GetCookieOnIOThread, this)); | 227 base::Bind(&CookiesGetFunction::GetCookieOnIOThread, this)); |
| 228 DCHECK(rv); | 228 DCHECK(rv); |
| 229 | 229 |
| 230 // Will finish asynchronously. | 230 // Will finish asynchronously. |
| 231 return true; | 231 return true; |
| 232 } | 232 } |
| 233 | 233 |
| 234 void CookiesGetFunction::GetCookieOnIOThread() { | 234 void CookiesGetFunction::GetCookieOnIOThread() { |
| 235 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 235 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 236 net::CookieStore* cookie_store = | 236 net::CookieStore* cookie_store = |
| 237 store_browser_context_->GetURLRequestContext()->cookie_store(); | 237 store_browser_context_->GetURLRequestContext()->cookie_store(); |
| 238 cookies_helpers::GetCookieListFromStore( | 238 cookies_helpers::GetCookieListFromStore( |
| 239 cookie_store, url_, | 239 cookie_store, url_, |
| 240 base::Bind(&CookiesGetFunction::GetCookieCallback, this)); | 240 base::Bind(&CookiesGetFunction::GetCookieCallback, this)); |
| 241 } | 241 } |
| 242 | 242 |
| 243 void CookiesGetFunction::GetCookieCallback(const net::CookieList& cookie_list) { | 243 void CookiesGetFunction::GetCookieCallback(const net::CookieList& cookie_list) { |
| 244 net::CookieList::const_iterator it; | 244 net::CookieList::const_iterator it; |
| 245 for (it = cookie_list.begin(); it != cookie_list.end(); ++it) { | 245 for (it = cookie_list.begin(); it != cookie_list.end(); ++it) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 258 if (it == cookie_list.end()) | 258 if (it == cookie_list.end()) |
| 259 SetResult(base::Value::CreateNullValue()); | 259 SetResult(base::Value::CreateNullValue()); |
| 260 | 260 |
| 261 bool rv = BrowserThread::PostTask( | 261 bool rv = BrowserThread::PostTask( |
| 262 BrowserThread::UI, FROM_HERE, | 262 BrowserThread::UI, FROM_HERE, |
| 263 base::Bind(&CookiesGetFunction::RespondOnUIThread, this)); | 263 base::Bind(&CookiesGetFunction::RespondOnUIThread, this)); |
| 264 DCHECK(rv); | 264 DCHECK(rv); |
| 265 } | 265 } |
| 266 | 266 |
| 267 void CookiesGetFunction::RespondOnUIThread() { | 267 void CookiesGetFunction::RespondOnUIThread() { |
| 268 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 268 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 269 SendResponse(true); | 269 SendResponse(true); |
| 270 } | 270 } |
| 271 | 271 |
| 272 CookiesGetAllFunction::CookiesGetAllFunction() { | 272 CookiesGetAllFunction::CookiesGetAllFunction() { |
| 273 } | 273 } |
| 274 | 274 |
| 275 CookiesGetAllFunction::~CookiesGetAllFunction() { | 275 CookiesGetAllFunction::~CookiesGetAllFunction() { |
| 276 } | 276 } |
| 277 | 277 |
| 278 bool CookiesGetAllFunction::RunImpl() { | 278 bool CookiesGetAllFunction::RunImpl() { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 297 bool rv = BrowserThread::PostTask( | 297 bool rv = BrowserThread::PostTask( |
| 298 BrowserThread::IO, FROM_HERE, | 298 BrowserThread::IO, FROM_HERE, |
| 299 base::Bind(&CookiesGetAllFunction::GetAllCookiesOnIOThread, this)); | 299 base::Bind(&CookiesGetAllFunction::GetAllCookiesOnIOThread, this)); |
| 300 DCHECK(rv); | 300 DCHECK(rv); |
| 301 | 301 |
| 302 // Will finish asynchronously. | 302 // Will finish asynchronously. |
| 303 return true; | 303 return true; |
| 304 } | 304 } |
| 305 | 305 |
| 306 void CookiesGetAllFunction::GetAllCookiesOnIOThread() { | 306 void CookiesGetAllFunction::GetAllCookiesOnIOThread() { |
| 307 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 307 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 308 net::CookieStore* cookie_store = | 308 net::CookieStore* cookie_store = |
| 309 store_browser_context_->GetURLRequestContext()->cookie_store(); | 309 store_browser_context_->GetURLRequestContext()->cookie_store(); |
| 310 cookies_helpers::GetCookieListFromStore( | 310 cookies_helpers::GetCookieListFromStore( |
| 311 cookie_store, url_, | 311 cookie_store, url_, |
| 312 base::Bind(&CookiesGetAllFunction::GetAllCookiesCallback, this)); | 312 base::Bind(&CookiesGetAllFunction::GetAllCookiesCallback, this)); |
| 313 } | 313 } |
| 314 | 314 |
| 315 void CookiesGetAllFunction::GetAllCookiesCallback( | 315 void CookiesGetAllFunction::GetAllCookiesCallback( |
| 316 const net::CookieList& cookie_list) { | 316 const net::CookieList& cookie_list) { |
| 317 const extensions::Extension* extension = GetExtension(); | 317 const extensions::Extension* extension = GetExtension(); |
| 318 if (extension) { | 318 if (extension) { |
| 319 std::vector<linked_ptr<Cookie> > match_vector; | 319 std::vector<linked_ptr<Cookie> > match_vector; |
| 320 cookies_helpers::AppendMatchingCookiesToVector( | 320 cookies_helpers::AppendMatchingCookiesToVector( |
| 321 cookie_list, url_, &parsed_args_->details, | 321 cookie_list, url_, &parsed_args_->details, |
| 322 GetExtension(), &match_vector); | 322 GetExtension(), &match_vector); |
| 323 | 323 |
| 324 results_ = GetAll::Results::Create(match_vector); | 324 results_ = GetAll::Results::Create(match_vector); |
| 325 } | 325 } |
| 326 bool rv = BrowserThread::PostTask( | 326 bool rv = BrowserThread::PostTask( |
| 327 BrowserThread::UI, FROM_HERE, | 327 BrowserThread::UI, FROM_HERE, |
| 328 base::Bind(&CookiesGetAllFunction::RespondOnUIThread, this)); | 328 base::Bind(&CookiesGetAllFunction::RespondOnUIThread, this)); |
| 329 DCHECK(rv); | 329 DCHECK(rv); |
| 330 } | 330 } |
| 331 | 331 |
| 332 void CookiesGetAllFunction::RespondOnUIThread() { | 332 void CookiesGetAllFunction::RespondOnUIThread() { |
| 333 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 333 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 334 SendResponse(true); | 334 SendResponse(true); |
| 335 } | 335 } |
| 336 | 336 |
| 337 CookiesSetFunction::CookiesSetFunction() : success_(false) { | 337 CookiesSetFunction::CookiesSetFunction() : success_(false) { |
| 338 } | 338 } |
| 339 | 339 |
| 340 CookiesSetFunction::~CookiesSetFunction() { | 340 CookiesSetFunction::~CookiesSetFunction() { |
| 341 } | 341 } |
| 342 | 342 |
| 343 bool CookiesSetFunction::RunImpl() { | 343 bool CookiesSetFunction::RunImpl() { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 361 bool rv = BrowserThread::PostTask( | 361 bool rv = BrowserThread::PostTask( |
| 362 BrowserThread::IO, FROM_HERE, | 362 BrowserThread::IO, FROM_HERE, |
| 363 base::Bind(&CookiesSetFunction::SetCookieOnIOThread, this)); | 363 base::Bind(&CookiesSetFunction::SetCookieOnIOThread, this)); |
| 364 DCHECK(rv); | 364 DCHECK(rv); |
| 365 | 365 |
| 366 // Will finish asynchronously. | 366 // Will finish asynchronously. |
| 367 return true; | 367 return true; |
| 368 } | 368 } |
| 369 | 369 |
| 370 void CookiesSetFunction::SetCookieOnIOThread() { | 370 void CookiesSetFunction::SetCookieOnIOThread() { |
| 371 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 371 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 372 net::CookieMonster* cookie_monster = | 372 net::CookieMonster* cookie_monster = |
| 373 store_browser_context_->GetURLRequestContext() | 373 store_browser_context_->GetURLRequestContext() |
| 374 ->cookie_store() | 374 ->cookie_store() |
| 375 ->GetCookieMonster(); | 375 ->GetCookieMonster(); |
| 376 | 376 |
| 377 base::Time expiration_time; | 377 base::Time expiration_time; |
| 378 if (parsed_args_->details.expiration_date.get()) { | 378 if (parsed_args_->details.expiration_date.get()) { |
| 379 // Time::FromDoubleT converts double time 0 to empty Time object. So we need | 379 // Time::FromDoubleT converts double time 0 to empty Time object. So we need |
| 380 // to do special handling here. | 380 // to do special handling here. |
| 381 expiration_time = (*parsed_args_->details.expiration_date == 0) ? | 381 expiration_time = (*parsed_args_->details.expiration_date == 0) ? |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 } | 432 } |
| 433 } | 433 } |
| 434 | 434 |
| 435 bool rv = BrowserThread::PostTask( | 435 bool rv = BrowserThread::PostTask( |
| 436 BrowserThread::UI, FROM_HERE, | 436 BrowserThread::UI, FROM_HERE, |
| 437 base::Bind(&CookiesSetFunction::RespondOnUIThread, this)); | 437 base::Bind(&CookiesSetFunction::RespondOnUIThread, this)); |
| 438 DCHECK(rv); | 438 DCHECK(rv); |
| 439 } | 439 } |
| 440 | 440 |
| 441 void CookiesSetFunction::RespondOnUIThread() { | 441 void CookiesSetFunction::RespondOnUIThread() { |
| 442 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 442 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 443 if (!success_) { | 443 if (!success_) { |
| 444 std::string name = | 444 std::string name = |
| 445 parsed_args_->details.name.get() ? *parsed_args_->details.name | 445 parsed_args_->details.name.get() ? *parsed_args_->details.name |
| 446 : std::string(); | 446 : std::string(); |
| 447 error_ = ErrorUtils::FormatErrorMessage(keys::kCookieSetFailedError, name); | 447 error_ = ErrorUtils::FormatErrorMessage(keys::kCookieSetFailedError, name); |
| 448 } | 448 } |
| 449 SendResponse(success_); | 449 SendResponse(success_); |
| 450 } | 450 } |
| 451 | 451 |
| 452 CookiesRemoveFunction::CookiesRemoveFunction() { | 452 CookiesRemoveFunction::CookiesRemoveFunction() { |
| (...skipping 24 matching lines...) Expand all Loading... |
| 477 bool rv = BrowserThread::PostTask( | 477 bool rv = BrowserThread::PostTask( |
| 478 BrowserThread::IO, FROM_HERE, | 478 BrowserThread::IO, FROM_HERE, |
| 479 base::Bind(&CookiesRemoveFunction::RemoveCookieOnIOThread, this)); | 479 base::Bind(&CookiesRemoveFunction::RemoveCookieOnIOThread, this)); |
| 480 DCHECK(rv); | 480 DCHECK(rv); |
| 481 | 481 |
| 482 // Will return asynchronously. | 482 // Will return asynchronously. |
| 483 return true; | 483 return true; |
| 484 } | 484 } |
| 485 | 485 |
| 486 void CookiesRemoveFunction::RemoveCookieOnIOThread() { | 486 void CookiesRemoveFunction::RemoveCookieOnIOThread() { |
| 487 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 487 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 488 | 488 |
| 489 // Remove the cookie | 489 // Remove the cookie |
| 490 net::CookieStore* cookie_store = | 490 net::CookieStore* cookie_store = |
| 491 store_browser_context_->GetURLRequestContext()->cookie_store(); | 491 store_browser_context_->GetURLRequestContext()->cookie_store(); |
| 492 cookie_store->DeleteCookieAsync( | 492 cookie_store->DeleteCookieAsync( |
| 493 url_, parsed_args_->details.name, | 493 url_, parsed_args_->details.name, |
| 494 base::Bind(&CookiesRemoveFunction::RemoveCookieCallback, this)); | 494 base::Bind(&CookiesRemoveFunction::RemoveCookieCallback, this)); |
| 495 } | 495 } |
| 496 | 496 |
| 497 void CookiesRemoveFunction::RemoveCookieCallback() { | 497 void CookiesRemoveFunction::RemoveCookieCallback() { |
| 498 // Build the callback result | 498 // Build the callback result |
| 499 Remove::Results::Details details; | 499 Remove::Results::Details details; |
| 500 details.name = parsed_args_->details.name; | 500 details.name = parsed_args_->details.name; |
| 501 details.url = url_.spec(); | 501 details.url = url_.spec(); |
| 502 details.store_id = *parsed_args_->details.store_id; | 502 details.store_id = *parsed_args_->details.store_id; |
| 503 results_ = Remove::Results::Create(details); | 503 results_ = Remove::Results::Create(details); |
| 504 | 504 |
| 505 // Return to UI thread | 505 // Return to UI thread |
| 506 bool rv = BrowserThread::PostTask( | 506 bool rv = BrowserThread::PostTask( |
| 507 BrowserThread::UI, FROM_HERE, | 507 BrowserThread::UI, FROM_HERE, |
| 508 base::Bind(&CookiesRemoveFunction::RespondOnUIThread, this)); | 508 base::Bind(&CookiesRemoveFunction::RespondOnUIThread, this)); |
| 509 DCHECK(rv); | 509 DCHECK(rv); |
| 510 } | 510 } |
| 511 | 511 |
| 512 void CookiesRemoveFunction::RespondOnUIThread() { | 512 void CookiesRemoveFunction::RespondOnUIThread() { |
| 513 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 513 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 514 SendResponse(true); | 514 SendResponse(true); |
| 515 } | 515 } |
| 516 | 516 |
| 517 bool CookiesGetAllCookieStoresFunction::RunImpl() { | 517 bool CookiesGetAllCookieStoresFunction::RunImpl() { |
| 518 Profile* original_profile = GetProfile(); | 518 Profile* original_profile = GetProfile(); |
| 519 DCHECK(original_profile); | 519 DCHECK(original_profile); |
| 520 scoped_ptr<base::ListValue> original_tab_ids(new base::ListValue()); | 520 scoped_ptr<base::ListValue> original_tab_ids(new base::ListValue()); |
| 521 Profile* incognito_profile = NULL; | 521 Profile* incognito_profile = NULL; |
| 522 scoped_ptr<base::ListValue> incognito_tab_ids; | 522 scoped_ptr<base::ListValue> incognito_tab_ids; |
| 523 if (include_incognito() && GetProfile()->HasOffTheRecordProfile()) { | 523 if (include_incognito() && GetProfile()->HasOffTheRecordProfile()) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 } | 583 } |
| 584 | 584 |
| 585 void CookiesAPI::OnListenerAdded( | 585 void CookiesAPI::OnListenerAdded( |
| 586 const extensions::EventListenerInfo& details) { | 586 const extensions::EventListenerInfo& details) { |
| 587 cookies_event_router_.reset(new CookiesEventRouter(browser_context_)); | 587 cookies_event_router_.reset(new CookiesEventRouter(browser_context_)); |
| 588 ExtensionSystem::Get(browser_context_)->event_router()->UnregisterObserver( | 588 ExtensionSystem::Get(browser_context_)->event_router()->UnregisterObserver( |
| 589 this); | 589 this); |
| 590 } | 590 } |
| 591 | 591 |
| 592 } // namespace extensions | 592 } // namespace extensions |
| OLD | NEW |