Home | History | Annotate | Download | only in tests
      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
      3 // found in the LICENSE file.
      4 
      5 #include "ppapi/tests/test_flash.h"
      6 
      7 #include "ppapi/c/pp_macros.h"
      8 #include "ppapi/c/private/ppb_flash.h"
      9 #include "ppapi/cpp/instance.h"
     10 #include "ppapi/cpp/module.h"
     11 #include "ppapi/cpp/private/flash.h"
     12 #include "ppapi/cpp/var.h"
     13 #include "ppapi/tests/testing_instance.h"
     14 
     15 REGISTER_TEST_CASE(Flash);
     16 
     17 using pp::flash::Flash;
     18 using pp::Var;
     19 
     20 TestFlash::TestFlash(TestingInstance* instance)
     21     : TestCase(instance),
     22       PP_ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)) {
     23 }
     24 
     25 void TestFlash::RunTests(const std::string& filter) {
     26   RUN_TEST(SetInstanceAlwaysOnTop, filter);
     27   RUN_TEST(GetProxyForURL, filter);
     28   RUN_TEST(GetLocalTimeZoneOffset, filter);
     29   RUN_TEST(GetCommandLineArgs, filter);
     30   RUN_TEST(GetSetting, filter);
     31   RUN_TEST(SetCrashData, filter);
     32 }
     33 
     34 std::string TestFlash::TestSetInstanceAlwaysOnTop() {
     35   Flash::SetInstanceAlwaysOnTop(instance_, PP_TRUE);
     36   Flash::SetInstanceAlwaysOnTop(instance_, PP_FALSE);
     37   PASS();
     38 }
     39 
     40 std::string TestFlash::TestGetProxyForURL() {
     41   Var result = Flash::GetProxyForURL(instance_, "http://127.0.0.1/foobar/");
     42   ASSERT_TRUE(result.is_string());
     43   // Assume no one configures a proxy for localhost.
     44   ASSERT_EQ("DIRECT", result.AsString());
     45 
     46   result = Flash::GetProxyForURL(instance_, "http://www.google.com");
     47   // Don't know what the proxy might be, but it should be a valid result.
     48   ASSERT_TRUE(result.is_string());
     49 
     50   result = Flash::GetProxyForURL(instance_, "file:///tmp");
     51   ASSERT_TRUE(result.is_string());
     52   // Should get "DIRECT" for file:// URLs.
     53   ASSERT_EQ("DIRECT", result.AsString());
     54 
     55   result = Flash::GetProxyForURL(instance_, "this_isnt_an_url");
     56   // Should be an error.
     57   ASSERT_TRUE(result.is_undefined());
     58 
     59   PASS();
     60 }
     61 
     62 std::string TestFlash::TestGetLocalTimeZoneOffset() {
     63   double result = Flash::GetLocalTimeZoneOffset(instance_, 1321491298.0);
     64   // The result depends on the local time zone, but +/- 14h from UTC should
     65   // cover the possibilities.
     66   ASSERT_TRUE(result >= -14 * 60 * 60);
     67   ASSERT_TRUE(result <= 14 * 60 * 60);
     68 
     69   PASS();
     70 }
     71 
     72 std::string TestFlash::TestGetCommandLineArgs() {
     73   Var result = Flash::GetCommandLineArgs(pp::Module::Get());
     74   ASSERT_TRUE(result.is_string());
     75 
     76   PASS();
     77 }
     78 
     79 std::string TestFlash::TestGetSetting() {
     80   Var is_3denabled = Flash::GetSetting(instance_, PP_FLASHSETTING_3DENABLED);
     81   ASSERT_TRUE(is_3denabled.is_bool());
     82 
     83   Var is_incognito = Flash::GetSetting(instance_, PP_FLASHSETTING_INCOGNITO);
     84   ASSERT_TRUE(is_incognito.is_bool());
     85 
     86   Var is_stage3denabled = Flash::GetSetting(instance_,
     87                                             PP_FLASHSETTING_STAGE3DENABLED);
     88   // This may "fail" if 3d isn't enabled.
     89   ASSERT_TRUE(is_stage3denabled.is_bool() ||
     90               (is_stage3denabled.is_undefined() && !is_3denabled.AsBool()));
     91 
     92   Var num_cores = Flash::GetSetting(instance_, PP_FLASHSETTING_NUMCORES);
     93   ASSERT_TRUE(num_cores.is_int() && num_cores.AsInt() > 0);
     94 
     95   Var lso_restrictions = Flash::GetSetting(instance_,
     96                                            PP_FLASHSETTING_LSORESTRICTIONS);
     97   ASSERT_TRUE(lso_restrictions.is_int());
     98   int32_t lso_restrictions_int = lso_restrictions.AsInt();
     99   ASSERT_TRUE(lso_restrictions_int == PP_FLASHLSORESTRICTIONS_NONE ||
    100               lso_restrictions_int == PP_FLASHLSORESTRICTIONS_BLOCK ||
    101               lso_restrictions_int == PP_FLASHLSORESTRICTIONS_IN_MEMORY);
    102 
    103   // Invalid instance cases.
    104   Var result = Flash::GetSetting(
    105       pp::InstanceHandle(static_cast<PP_Instance>(0)),
    106       PP_FLASHSETTING_3DENABLED);
    107   ASSERT_TRUE(result.is_undefined());
    108   result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)),
    109                              PP_FLASHSETTING_INCOGNITO);
    110   ASSERT_TRUE(result.is_undefined());
    111   result = Flash::GetSetting(pp::InstanceHandle(static_cast<PP_Instance>(0)),
    112                              PP_FLASHSETTING_STAGE3DENABLED);
    113   ASSERT_TRUE(result.is_undefined());
    114 
    115   PASS();
    116 }
    117 
    118 std::string TestFlash::TestSetCrashData() {
    119   pp::Var url("http://...");
    120   ASSERT_TRUE(Flash::SetCrashData(instance_, PP_FLASHCRASHKEY_URL, url));
    121 
    122   PASS();
    123 }
    124