generate test_shell.pak and hook up loading net resources from
test_shell.pak. Move the net resource loading into the platform specific files (still a stub on osx). Review URL: http://codereview.chromium.org/18186 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8321 0039d316-1c4b-4281-b951-d872f2087c98
Esse commit está contido em:
@@ -39,6 +39,8 @@ class DataPack {
|
||||
|
||||
// Number of resources in the data.
|
||||
size_t resource_count_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(DataPack);
|
||||
};
|
||||
|
||||
} // namespace base
|
||||
|
||||
@@ -807,15 +807,15 @@ std::string CanonicalizeHost(const std::wstring& host, bool* is_ip_address) {
|
||||
}
|
||||
|
||||
std::string GetDirectoryListingHeader(const std::string& title) {
|
||||
#if defined(OS_WIN)
|
||||
#if defined(OS_WIN) || defined(OS_LINUX)
|
||||
static const StringPiece header(NetModule::GetResource(IDR_DIR_HEADER_HTML));
|
||||
if (header.empty()) {
|
||||
NOTREACHED() << "expected resource not found";
|
||||
}
|
||||
std::string result(header.data(), header.size());
|
||||
#elif defined(OS_POSIX)
|
||||
#elif defined(OS_MACOSX)
|
||||
// TODO(estade): Temporary hack. Remove these platform #ifdefs when we
|
||||
// have implemented resources for non-Windows platforms.
|
||||
// have implemented resources for OSX.
|
||||
LOG(INFO) << "FIXME: hacked resource loading";
|
||||
FilePath path;
|
||||
PathService::Get(base::DIR_EXE, &path);
|
||||
|
||||
@@ -194,6 +194,22 @@ env.Alias('webkit', i)
|
||||
if env.Bit('windows'):
|
||||
env.Depends(test_shell, '$V8_DIR/vc80.pdb')
|
||||
|
||||
if env.Bit('linux'):
|
||||
# Build the linux resource file.
|
||||
env.Append(BUILDERS = { 'Repack' : Builder(
|
||||
action = 'python $CHROME_SRC_DIR/tools/data_pack/repack.py $TARGET $SOURCES',
|
||||
)})
|
||||
test_shell_data = env.Repack(
|
||||
'$TARGET_ROOT/test_shell.pak',
|
||||
['$TARGET_ROOT/grit_derived_sources/net_resources.pak',
|
||||
'$TARGET_ROOT/grit_derived_sources/webkit_resources.pak',
|
||||
]
|
||||
)
|
||||
env.Depends(test_shell, test_shell_data)
|
||||
|
||||
i = env.Install('$DESTINATION_ROOT', test_shell_data)
|
||||
env.Alias('webkit', i)
|
||||
|
||||
test_files = [
|
||||
'image_decoder_unittest.cc',
|
||||
'keyboard_unittest.cc',
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
typedef std::list<gfx::NativeWindow> WindowList;
|
||||
|
||||
struct WebPreferences;
|
||||
class StringPiece;
|
||||
class TestNavigationEntry;
|
||||
class TestNavigationController;
|
||||
|
||||
@@ -252,6 +253,9 @@ public:
|
||||
// Show the "attach to me" dialog, for debugging test shell startup.
|
||||
static void ShowStartupDebuggingDialog();
|
||||
|
||||
// This is called indirectly by the network layer to access resources.
|
||||
static StringPiece NetResourceProvider(int key);
|
||||
|
||||
protected:
|
||||
bool Initialize(const std::wstring& startingURL);
|
||||
void SizeToSVG();
|
||||
|
||||
@@ -11,10 +11,12 @@
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "base/data_pack.h"
|
||||
#include "base/file_path.h"
|
||||
#include "base/file_util.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/string_piece.h"
|
||||
#include "base/string_util.h"
|
||||
#include "net/base/mime_util.h"
|
||||
#include "net/base/net_util.h"
|
||||
@@ -616,6 +618,24 @@ void TestShell::ShowStartupDebuggingDialog() {
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
||||
// static
|
||||
StringPiece TestShell::NetResourceProvider(int key) {
|
||||
static scoped_ptr<base::DataPack> resource_data_pack;
|
||||
|
||||
if (!resource_data_pack.get()) {
|
||||
resource_data_pack.reset(new base::DataPack);
|
||||
FilePath data_path;
|
||||
PathService::Get(base::DIR_EXE, &data_path);
|
||||
data_path = data_path.Append("test_shell.pak");
|
||||
bool success = resource_data_pack->Load(data_path);
|
||||
CHECK(success) << "failed to load test_shell.pak";
|
||||
}
|
||||
|
||||
StringPiece res;
|
||||
resource_data_pack->Get(key, &res);
|
||||
return res;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
namespace webkit_glue {
|
||||
|
||||
@@ -15,11 +15,13 @@
|
||||
#include "base/file_util.h"
|
||||
#include "base/gfx/size.h"
|
||||
#include "base/icu_util.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/mac_util.h"
|
||||
#include "base/memory_debug.h"
|
||||
#include "base/message_loop.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/stats_table.h"
|
||||
#include "base/string_piece.h"
|
||||
#include "base/string_util.h"
|
||||
#include "net/base/mime_util.h"
|
||||
#include "skia/ext/bitmap_platform_device.h"
|
||||
@@ -859,6 +861,12 @@ void TestShell::ShowStartupDebuggingDialog() {
|
||||
// TODO(port): Show a modal dialog here with an attach to me message.
|
||||
}
|
||||
|
||||
StringPiece TestShell::NetResourceProvider(int key) {
|
||||
// TODO(port): Return the requested resource.
|
||||
NOTIMPLEMENTED();
|
||||
return StringPiece();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
namespace webkit_glue {
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include "base/process_util.h"
|
||||
#include "base/rand_util.h"
|
||||
#include "base/stats_table.h"
|
||||
#include "base/string_piece.h"
|
||||
#include "base/string_util.h"
|
||||
#include "base/sys_info.h"
|
||||
#include "base/trace_event.h"
|
||||
@@ -60,19 +59,6 @@ static int kStatsFileThreads = 20;
|
||||
static int kStatsFileCounters = 200;
|
||||
|
||||
#if defined(OS_WIN)
|
||||
StringPiece GetRawDataResource(HMODULE module, int resource_id) {
|
||||
void* data_ptr;
|
||||
size_t data_size;
|
||||
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
|
||||
&data_size) ?
|
||||
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
|
||||
}
|
||||
|
||||
// This is called indirectly by the network layer to access resources.
|
||||
StringPiece NetResourceProvider(int key) {
|
||||
return GetRawDataResource(::GetModuleHandle(NULL), key);
|
||||
}
|
||||
|
||||
// This test approximates whether you have the Windows XP theme selected by
|
||||
// inspecting a couple of metrics. It does not catch all cases, but it does
|
||||
// pick up on classic vs xp, and normal vs large fonts. Something it misses
|
||||
@@ -224,10 +210,10 @@ int main(int argc, char* argv[]) {
|
||||
// Load ICU data tables
|
||||
icu_util::Initialize();
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// Config the network module so it has access to a limited set of resources.
|
||||
net::NetModule::SetResourceProvider(NetResourceProvider);
|
||||
net::NetModule::SetResourceProvider(TestShell::NetResourceProvider);
|
||||
|
||||
#if defined(OS_WIN)
|
||||
INITCOMMONCONTROLSEX InitCtrlEx;
|
||||
|
||||
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "base/path_service.h"
|
||||
#include "base/resource_util.h"
|
||||
#include "base/stack_container.h"
|
||||
#include "base/string_piece.h"
|
||||
#include "base/string_util.h"
|
||||
#include "base/trace_event.h"
|
||||
#include "base/win_util.h"
|
||||
@@ -111,6 +112,14 @@ bool MinidumpCallback(const wchar_t *dumpPath,
|
||||
return false;
|
||||
}
|
||||
|
||||
StringPiece GetRawDataResource(HMODULE module, int resource_id) {
|
||||
void* data_ptr;
|
||||
size_t data_size;
|
||||
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
|
||||
&data_size) ?
|
||||
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// Initialize static member variable
|
||||
@@ -690,6 +699,12 @@ void TestShell::ShowStartupDebuggingDialog() {
|
||||
MessageBox(NULL, L"attach to me?", L"test_shell", MB_OK);
|
||||
}
|
||||
|
||||
// static
|
||||
StringPiece TestShell::NetResourceProvider(int key) {
|
||||
return GetRawDataResource(::GetModuleHandle(NULL), key);
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// WebKit glue functions
|
||||
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário