Merge pull request #9194 from electron/external/cookie-flushstore-api
Adding cookie flush store api
This commit is contained in:
commit
1fe10406ad
4 changed files with 38 additions and 1 deletions
|
@ -179,6 +179,13 @@ void OnSetCookie(const Cookies::SetCallback& callback, bool success) {
|
||||||
base::Bind(callback, success ? Cookies::SUCCESS : Cookies::FAILED));
|
base::Bind(callback, success ? Cookies::SUCCESS : Cookies::FAILED));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Flushes cookie store in IO thread.
|
||||||
|
void FlushCookieStoreOnIOThread(
|
||||||
|
scoped_refptr<net::URLRequestContextGetter> getter,
|
||||||
|
const base::Closure& callback) {
|
||||||
|
GetCookieStore(getter)->FlushStore(base::Bind(RunCallbackInUI, callback));
|
||||||
|
}
|
||||||
|
|
||||||
// Sets cookie with |details| in IO thread.
|
// Sets cookie with |details| in IO thread.
|
||||||
void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
|
void SetCookieOnIO(scoped_refptr<net::URLRequestContextGetter> getter,
|
||||||
std::unique_ptr<base::DictionaryValue> details,
|
std::unique_ptr<base::DictionaryValue> details,
|
||||||
|
@ -265,6 +272,13 @@ void Cookies::Set(const base::DictionaryValue& details,
|
||||||
base::Bind(SetCookieOnIO, getter, Passed(&copied), callback));
|
base::Bind(SetCookieOnIO, getter, Passed(&copied), callback));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Cookies::FlushStore(const base::Closure& callback) {
|
||||||
|
auto getter = make_scoped_refptr(request_context_getter_);
|
||||||
|
content::BrowserThread::PostTask(
|
||||||
|
BrowserThread::IO, FROM_HERE,
|
||||||
|
base::Bind(FlushCookieStoreOnIOThread, getter, callback));
|
||||||
|
}
|
||||||
|
|
||||||
void Cookies::OnCookieChanged(const net::CanonicalCookie& cookie,
|
void Cookies::OnCookieChanged(const net::CanonicalCookie& cookie,
|
||||||
bool removed,
|
bool removed,
|
||||||
net::CookieStore::ChangeCause cause) {
|
net::CookieStore::ChangeCause cause) {
|
||||||
|
@ -286,7 +300,8 @@ void Cookies::BuildPrototype(v8::Isolate* isolate,
|
||||||
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
|
mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
|
||||||
.SetMethod("get", &Cookies::Get)
|
.SetMethod("get", &Cookies::Get)
|
||||||
.SetMethod("remove", &Cookies::Remove)
|
.SetMethod("remove", &Cookies::Remove)
|
||||||
.SetMethod("set", &Cookies::Set);
|
.SetMethod("set", &Cookies::Set)
|
||||||
|
.SetMethod("flushStore", &Cookies::FlushStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
|
@ -53,6 +53,7 @@ class Cookies : public mate::TrackableObject<Cookies>,
|
||||||
void Remove(const GURL& url, const std::string& name,
|
void Remove(const GURL& url, const std::string& name,
|
||||||
const base::Closure& callback);
|
const base::Closure& callback);
|
||||||
void Set(const base::DictionaryValue& details, const SetCallback& callback);
|
void Set(const base::DictionaryValue& details, const SetCallback& callback);
|
||||||
|
void FlushStore(const base::Closure& callback);
|
||||||
|
|
||||||
// AtomCookieDelegate::Observer:
|
// AtomCookieDelegate::Observer:
|
||||||
void OnCookieChanged(const net::CanonicalCookie& cookie,
|
void OnCookieChanged(const net::CanonicalCookie& cookie,
|
||||||
|
|
|
@ -104,3 +104,9 @@ on complete.
|
||||||
|
|
||||||
Removes the cookies matching `url` and `name`, `callback` will called with
|
Removes the cookies matching `url` and `name`, `callback` will called with
|
||||||
`callback()` on complete.
|
`callback()` on complete.
|
||||||
|
|
||||||
|
#### `cookies.flushStore(callback)`
|
||||||
|
|
||||||
|
* `callback` Function
|
||||||
|
|
||||||
|
Writes any unwritten cookies data to disk.
|
||||||
|
|
|
@ -219,6 +219,21 @@ describe('session module', function () {
|
||||||
if (error) return done(error)
|
if (error) return done(error)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('ses.cookies.flushStore(callback)', function () {
|
||||||
|
it('flushes the cookies to disk and invokes the callback when done', function (done) {
|
||||||
|
session.defaultSession.cookies.set({
|
||||||
|
url: url,
|
||||||
|
name: 'foo',
|
||||||
|
value: 'bar'
|
||||||
|
}, (error) => {
|
||||||
|
if (error) return done(error)
|
||||||
|
session.defaultSession.cookies.flushStore(() => {
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('ses.clearStorageData(options)', function () {
|
describe('ses.clearStorageData(options)', function () {
|
||||||
|
|
Loading…
Reference in a new issue