예제 #1
0
void ServiceWorkerGlobalScopeProxy::dispatchExtendableMessageEvent(
    int eventID,
    const WebString& message,
    const WebSecurityOrigin& sourceOrigin,
    const WebMessagePortChannelArray& webChannels,
    const WebServiceWorkerClientInfo& client) {
  WebSerializedScriptValue value =
      WebSerializedScriptValue::fromString(message);
  MessagePortArray* ports =
      MessagePort::toMessagePortArray(m_workerGlobalScope, webChannels);
  String origin;
  if (!sourceOrigin.isUnique())
    origin = sourceOrigin.toString();
  ServiceWorkerClient* source = nullptr;
  if (client.clientType == WebServiceWorkerClientTypeWindow)
    source = ServiceWorkerWindowClient::create(client);
  else
    source = ServiceWorkerClient::create(client);
  WaitUntilObserver* observer = WaitUntilObserver::create(
      workerGlobalScope(), WaitUntilObserver::Message, eventID);

  Event* event =
      ExtendableMessageEvent::create(value, origin, ports, source, observer);
  workerGlobalScope()->dispatchExtendableEvent(event, observer);
}
예제 #2
0
void WebChromeClient::exceededDatabaseQuota(Frame* frame, const String& databaseIdentifier)
{
#if ENABLE(DATABASE)
    WebSecurityOrigin *origin = WebSecurityOrigin::createInstance(frame->document()->securityOrigin());
    const unsigned long long defaultQuota = 5 * 1024 * 1024; // 5 megabytes should hopefully be enough to test storage support.
    origin->setQuota(defaultQuota);
    delete origin;
#endif
}
예제 #3
0
void WebDatabaseManager::deleteDatabase(WebCore::String databaseName, WebSecurityOrigin* origin)
{
    if (this != s_sharedWebDatabaseManager)
        return;

    WebSecurityOrigin* webSecurityOrigin = WebSecurityOrigin::createInstance(origin->securityOrigin());
    if (!webSecurityOrigin)
        return;

    DatabaseTracker::tracker().deleteDatabase(webSecurityOrigin->securityOrigin(), databaseName);

    delete webSecurityOrigin;
}
예제 #4
0
void WebDatabaseManager::deleteOrigin(WebSecurityOrigin* origin)
{
    if (this != s_sharedWebDatabaseManager)
        return;

    WebSecurityOrigin* webSecurityOrigin = WebSecurityOrigin::createInstance(origin->securityOrigin());
    if (!webSecurityOrigin)
        return;

    DatabaseTracker::tracker().deleteOrigin(webSecurityOrigin->securityOrigin());

    delete webSecurityOrigin;
}
예제 #5
0
void WebChromeClient::exceededDatabaseQuota(Frame* frame, const String& databaseIdentifier)
{
#if ENABLE(DATABASE)
    WebSecurityOrigin *origin = WebSecurityOrigin::createInstance(frame->document()->securityOrigin());
    SharedPtr<JSActionDelegate> jsActionDelegate = m_webView->jsActionDelegate();
    if (jsActionDelegate)
        jsActionDelegate->exceededDatabaseQuota(m_webView->mainFrame(), origin, databaseIdentifier.utf8().data());
    else {
        const unsigned long long defaultQuota = 5 * 1024 * 1024; // 5 megabytes should hopefully be enough to test storage support.
        origin->setQuota(defaultQuota);
    }
    delete origin;
#endif
}
void NotificationPresenter::requestPermission(
    const WebSecurityOrigin& origin,
    WebNotificationPermissionCallback* callback)
{
    m_delegate->printMessage("DESKTOP NOTIFICATION PERMISSION REQUESTED: " + string(origin.toString().utf8()) + "\n");
    callback->permissionRequestComplete();
}
예제 #7
0
Vector<String> WebDatabaseManager::databasesWithOrigin(WebSecurityOrigin* origin)
{
    Vector<String> databaseNames;
    if (this != s_sharedWebDatabaseManager)
        return databaseNames;

    WebSecurityOrigin *webSecurityOrigin = WebSecurityOrigin::createInstance(origin->securityOrigin());
    if (!webSecurityOrigin)
        return databaseNames;

    DatabaseTracker::tracker().databaseNamesForOrigin(webSecurityOrigin->securityOrigin(), databaseNames);

    delete webSecurityOrigin;

    return databaseNames;
}
void NotificationPresenter::requestPermission(
    const WebSecurityOrigin& origin,
    WebNotificationPermissionCallback* callback)
{
    printf("DESKTOP NOTIFICATION PERMISSION REQUESTED: %s\n",
           origin.toString().utf8().data());
    callback->permissionRequestComplete();
}
WebNotificationPresenter::Permission NotificationPresenter::checkPermission(const WebSecurityOrigin& origin)
{
    // Check with the layout test controller
    WebString originString = origin.toString();
    bool allowed = m_allowedOrigins.find(string(originString.utf8())) != m_allowedOrigins.end();
    return allowed ? WebNotificationPresenter::PermissionAllowed
        : WebNotificationPresenter::PermissionDenied;
}
예제 #10
0
void ServiceWorkerGlobalScopeProxy::dispatchExtendableMessageEvent(
    int eventID,
    const WebString& message,
    const WebSecurityOrigin& sourceOrigin,
    const WebMessagePortChannelArray& webChannels,
    std::unique_ptr<WebServiceWorker::Handle> handle) {
  WebSerializedScriptValue value =
      WebSerializedScriptValue::fromString(message);
  MessagePortArray* ports =
      MessagePort::toMessagePortArray(m_workerGlobalScope, webChannels);
  String origin;
  if (!sourceOrigin.isUnique())
    origin = sourceOrigin.toString();
  ServiceWorker* source =
      ServiceWorker::from(m_workerGlobalScope->getExecutionContext(),
                          WTF::wrapUnique(handle.release()));
  WaitUntilObserver* observer = WaitUntilObserver::create(
      workerGlobalScope(), WaitUntilObserver::Message, eventID);

  Event* event =
      ExtendableMessageEvent::create(value, origin, ports, source, observer);
  workerGlobalScope()->dispatchExtendableEvent(event, observer);
}
예제 #11
0
DatabaseDetails WebDatabaseManager::detailsForDatabase(WebCore::String databaseName, WebSecurityOrigin* origin)
{
    if (this != s_sharedWebDatabaseManager)
        return DatabaseDetails();

    WebSecurityOrigin* webSecurityOrigin = WebSecurityOrigin::createInstance(origin->securityOrigin());
    if (!webSecurityOrigin)
        return DatabaseDetails();

    DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(databaseName, webSecurityOrigin->securityOrigin());

    delete webSecurityOrigin;

    return details;
}
예제 #12
0
// WebSecurityOrigin ---------------------------------------------------------------
WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)
{
    WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);
    origin->AddRef();
    return origin;
}
void WebDatabase::closeDatabaseImmediately(const WebSecurityOrigin& origin, const WebString& databaseName)
{
    DatabaseTracker::tracker().closeDatabasesImmediately(origin.get(), databaseName);
}
void WebDatabase::resetSpaceAvailable(const WebSecurityOrigin& origin)
{
    QuotaTracker::instance().resetSpaceAvailableToOrigin(origin.get());
}
void WebDatabase::updateSpaceAvailable(const WebSecurityOrigin& origin, long long spaceAvailable)
{
    QuotaTracker::instance().updateSpaceAvailableToOrigin(origin.get(), spaceAvailable);
}
void WebDatabase::updateDatabaseSize(const WebSecurityOrigin& origin, const WebString& name, long long size)
{
    QuotaTracker::instance().updateDatabaseSize(origin.get(), name, size);
}