blob: c854de56de60409a55424e2bcb242f39a3e50106 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/tests/test_flash.h"
#include "ppapi/c/pp_macros.h"
#include "ppapi/c/private/ppb_flash.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/private/flash.h"
#include "ppapi/cpp/var.h"
#include "ppapi/tests/testing_instance.h"
REGISTER_TEST_CASE(Flash);
using pp::flash::Flash;
using pp::Var;
TestFlash::TestFlash(TestingInstance* instance)
: TestCase(instance),
callback_factory_(this) {
}
void TestFlash::RunTests(const std::string& filter) {
RUN_TEST(SetInstanceAlwaysOnTop, filter);
RUN_TEST(GetProxyForURL, filter);
RUN_TEST(GetLocalTimeZoneOffset, filter);
RUN_TEST(GetCommandLineArgs, filter);
RUN_TEST(GetSetting, filter);
RUN_TEST(SetCrashData, filter);
}
std::string TestFlash::TestSetInstanceAlwaysOnTop() {
Flash::SetInstanceAlwaysOnTop(instance_, PP_TRUE);
Flash::SetInstanceAlwaysOnTop(instance_, PP_FALSE);
PASS();
}
std::string TestFlash::TestGetProxyForURL() {
Var result = Flash::GetProxyForURL(instance_, "http://127.0.0.1/foobar/");
ASSERT_TRUE(result.is_string());
// Assume no one configures a proxy for localhost.
ASSERT_EQ("DIRECT", result.AsString());
result = Flash::GetProxyForURL(instance_, "http://www.google.com");
// Don't know what the proxy might be, but it should be a valid result.
ASSERT_TRUE(result.is_string());
result = Flash::GetProxyForURL(instance_, "file:///tmp");
ASSERT_TRUE(result.is_string());
// Should get "DIRECT" for file:// URLs.
ASSERT_EQ("DIRECT", result.AsString());
result = Flash::GetProxyForURL(instance_, "this_isnt_an_url");
// Should be an error.
ASSERT_TRUE(result.is_undefined());
PASS();
}
std::string TestFlash::TestGetLocalTimeZoneOffset() {
double result = Flash::GetLocalTimeZoneOffset(instance_, 1321491298.0);
// The result depends on the local time zone, but +/- 14h from UTC should
// cover the possibilities.
ASSERT_TRUE(result >= -14 * 60 * 60);
ASSERT_TRUE(result <= 14 * 60 * 60);
PASS();
}
std::string TestFlash::TestGetCommandLineArgs() {
Var result = Flash::GetCommandLineArgs(pp::Module::Get());
ASSERT_TRUE(result.is_string());
PASS();
}
std::string TestFlash::TestGetSetting() {
Var is_3denabled = Flash::GetSetting(instance_, PP_FLASHSETTING_3DENABLED);
ASSERT_TRUE(is_3denabled.is_bool());
Var is_incognito = Flash::GetSetting(instance_, PP_FLASHSETTING_INCOGNITO);
ASSERT_TRUE(is_incognito.is_bool());
Var is_stage3denabled = Flash::GetSetting(instance_,
PP_FLASHSETTING_STAGE3DENABLED);
// This may "fail" if 3d isn't enabled.
ASSERT_TRUE(is_stage3denabled.is_bool() ||
(is_stage3denabled.is_undefined() && !is_3denabled.AsBool()));
Var num_cores = Flash::GetSetting(instance_, PP_FLASHSETTING_NUMCORES);
ASSERT_TRUE(num_cores.is_int() && num_cores.AsInt() > 0);
Var lso_restrictions = Flash::GetSetting(instance_,
PP_FLASHSETTING_LSORESTRICTIONS);
ASSERT_TRUE(lso_restrictions.is_int());
int32_t lso_restrictions_int = lso_restrictions.AsInt();
ASSERT_TRUE(lso_restrictions_int == PP_FLASHLSORESTRICTIONS_NONE ||
lso_restrictions_int == PP_FLASHLSORESTRICTIONS_BLOCK ||
lso_restrictions_int == PP_FLASHLSORESTRICTIONS_IN_MEMORY);
// Invalid instance cases.
Var result = Flash::GetSetting(
pp::InstanceHandle(static_cast<PP_Instance>(0)),
PP_FLASHSETTING_3DENABLED);
ASSERT_TRUE(result.is_undefined());
result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)),
PP_FLASHSETTING_INCOGNITO);
ASSERT_TRUE(result.is_undefined());
result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)),
PP_FLASHSETTING_STAGE3DENABLED);
ASSERT_TRUE(result.is_undefined());
PASS();
}
std::string TestFlash::TestSetCrashData() {
pp::Var url("http://...");
ASSERT_TRUE(Flash::SetCrashData(instance_, PP_FLASHCRASHKEY_URL, url));
PASS();
}