Skip to content

Commit

Permalink
nwjs master
Browse files Browse the repository at this point in the history
  • Loading branch information
GnorTech committed Aug 3, 2017
1 parent e6ccc35 commit 9a7251d
Show file tree
Hide file tree
Showing 703 changed files with 9,729 additions and 1,935 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -302,3 +302,5 @@ vs-chromium-project.txt
/win8/metro_driver/metro_driver_version_resources.xml
/x86-generic_out/
/xcodebuild
/content/nw

1 change: 1 addition & 0 deletions BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ group("gn_all") {

if (!is_ios && !is_android && !is_chromecast && !is_fuchsia) {
deps += [
"//content/nw:nwjs",
"//chrome",
"//chrome/test:browser_tests",
"//chrome/test:interactive_ui_tests",
Expand Down
22 changes: 20 additions & 2 deletions DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ vars = {
'6226d6cd80aaf2e5295ed460cf73ef6a582e4d78',
'freetype_revision':
'7819aeb622a94be0d89caf8382f290d0266c4aed',
'nwjs_git':
'https://github.com/nwjs',
'google_toolbox_for_mac_revision':
'038a2399b20e67ab17685e23ee873a66811fa107',
'libfuzzer_revision':
Expand Down Expand Up @@ -183,8 +185,13 @@ deps = {
(Var("chromium_git")) + '/chromium/deps/acid3.git@6be0a66a1ebd7ebc5abc1b2f405a945f6d871521',
'src/tools/swarming_client':
(Var("chromium_git")) + '/external/swarming.client.git@a941a089ff1000403078b74cb628eb430f07d271',
'src/v8':
(Var("chromium_git")) + '/v8/v8.git@1afc2928674b408d7811b067a229c8331edea745'
#'src/v8':
# (Var("chromium_git")) + '/v8/v8.git@1afc2928674b408d7811b067a229c8331edea745'
# (Var("nwjs_git")) + '/v8.git@origin/nw16',
#'src/content/nw':
# (Var("nwjs_git")) + '/nw.js.git@origin/nw16',
#'src/third_party/node':
# (Var("nwjs_git")) + '/node.git@origin/nw16',
}

deps_os = {
Expand Down Expand Up @@ -690,6 +697,17 @@ hooks = [
'name':
'wasm_asmjs_fuzzer'
},
{
'action': [
'python',
'src/content/nw/tools/patcher.py',
'--patch-config', 'src/content/nw/patch/patch.cfg'
],
'pattern':
'.',
'name':
'nw_patch'
},
{
'action': [
'python',
Expand Down
2 changes: 2 additions & 0 deletions apps/app_lifetime_monitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,10 @@ void AppLifetimeMonitor::OnAppWindowRemoved(AppWindow* app_window) {
}

void AppLifetimeMonitor::OnAppWindowHidden(AppWindow* app_window) {
#if 0
if (!HasOtherVisibleAppWindows(app_window))
NotifyAppDeactivated(app_window->extension_id());
#endif
}

void AppLifetimeMonitor::OnAppWindowShown(AppWindow* app_window,
Expand Down
7 changes: 5 additions & 2 deletions apps/launcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ class PlatformAppPathLauncher
extension_id(app->id()),
entry_paths_(entry_paths),
mime_type_collector_(context),
is_directory_collector_(context) {}
is_directory_collector_(context) {
if (app->is_nwjs_app()) //NWJS#5097
entry_paths_.clear();
}

PlatformAppPathLauncher(content::BrowserContext* context,
const Extension* app,
Expand All @@ -110,7 +113,7 @@ class PlatformAppPathLauncher
extension_id(app->id()),
mime_type_collector_(context),
is_directory_collector_(context) {
if (!file_path.empty())
if (!file_path.empty() && !app->is_nwjs_app()) //NWJS#5097
entry_paths_.push_back(file_path);
}

Expand Down
2 changes: 2 additions & 0 deletions base/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,8 @@ component("base") {
"message_loop/message_pump_libevent.h",
"message_loop/message_pump_mac.h",
"message_loop/message_pump_mac.mm",
"message_loop/message_pump_uv.cc",
"message_loop/message_pump_uv.h",
"message_loop/message_pump_win.cc",
"message_loop/message_pump_win.h",
"message_loop/timer_slack.h",
Expand Down
1 change: 1 addition & 0 deletions base/base_switches.cc
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,5 @@ const char kEnableCrashReporterForTesting[] =
"enable-crash-reporter-for-testing";
#endif

const char kNWJS[] = "nwjs";
} // namespace switches
1 change: 1 addition & 0 deletions base/base_switches.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ extern const char kDisableUsbKeyboardDetect[];
extern const char kEnableCrashReporterForTesting[];
#endif

extern const char kNWJS[];
} // namespace switches

#endif // BASE_BASE_SWITCHES_H_
79 changes: 74 additions & 5 deletions base/command_line.cc
Original file line number Diff line number Diff line change
Expand Up @@ -152,43 +152,84 @@ string16 QuoteForCommandLineToArgvW(const string16& arg,

CommandLine::CommandLine(NoProgram no_program)
: argv_(1),
begin_args_(1) {
begin_args_(1),
argc0_(0), argv0_(NULL) {
}

CommandLine::CommandLine(const FilePath& program)
: argv_(1),
begin_args_(1) {
begin_args_(1),
argc0_(0), argv0_(NULL) {
SetProgram(program);
}

CommandLine::CommandLine(int argc, const CommandLine::CharType* const* argv)
: argv_(1),
begin_args_(1) {
begin_args_(1),
argc0_(0), argv0_(NULL) {
InitFromArgv(argc, argv);
}

CommandLine::CommandLine(const StringVector& argv)
: argv_(1),
begin_args_(1) {
begin_args_(1),
argc0_(0), argv0_(NULL) {
InitFromArgv(argv);
}

CommandLine::CommandLine(const CommandLine& other)
: argv_(other.argv_),
original_argv_(other.original_argv_),
switches_(other.switches_),
begin_args_(other.begin_args_) {
begin_args_(other.begin_args_),
argc0_(other.argc0_), argv0_(NULL) {

#if defined(OS_WIN)
if (other.argv0_) {
argv0_ = new char*[argc0_ + 1];
for (int i = 0; i < argc0_; ++i) {
argv0_[i] = new char[strlen(other.argv0_[i]) + 1];
strcpy(argv0_[i], other.argv0_[i]);
}
argv0_[argc0_] = NULL;
}
#else
argv0_ = other.argv0_;
#endif
ResetStringPieces();
}

CommandLine& CommandLine::operator=(const CommandLine& other) {
argv_ = other.argv_;
original_argv_ = other.original_argv_;
switches_ = other.switches_;
begin_args_ = other.begin_args_;
#if defined(OS_WIN)
if (other.argv0_) {
argc0_ = other.argc0_;
argv0_ = new char*[argc0_ + 1];
for (int i = 0; i < argc0_; ++i) {
argv0_[i] = new char[strlen(other.argv0_[i]) + 1];
strcpy(argv0_[i], other.argv0_[i]);
}
argv0_[argc0_] = NULL;
}
#else
argv0_ = other.argv0_;
#endif
ResetStringPieces();
return *this;
}

CommandLine::~CommandLine() {
#if defined(OS_WIN)
if (!argv0_)
return;
for (int i = 0; i < argc0_; i++) {
delete[] argv0_[i];
}
delete[] argv0_;
#endif
}

#if defined(OS_WIN)
Expand Down Expand Up @@ -260,12 +301,34 @@ CommandLine CommandLine::FromString(const string16& command_line) {
void CommandLine::InitFromArgv(int argc,
const CommandLine::CharType* const* argv) {
StringVector new_argv;
argc0_ = argc;
#if !defined(OS_WIN)
argv0_ = (char**)argv;
#else
argv0_ = new char*[argc + 1];
for (int i = 0; i < argc; ++i) {
std::string str(base::WideToUTF8(argv[i]));
argv0_[i] = new char[str.length() + 1];
strcpy(argv0_[i], str.c_str());
}
argv0_[argc] = NULL;
#endif
for (int i = 0; i < argc; ++i)
new_argv.push_back(argv[i]);
InitFromArgv(new_argv);
}

void CommandLine::InitFromArgv(const StringVector& argv) {
#if !defined(OS_MACOSX)
original_argv_ = argv;
#else
for (size_t index = 0; index < argv.size(); ++index) {
if (argv[index].compare(0, strlen("--psn_"), "--psn_") != 0 &&
argv[index].compare(0, strlen("-psn_"), "-psn_") != 0) {
original_argv_.push_back(argv[index]);
}
}
#endif
argv_ = StringVector(1);
switches_.clear();
switches_by_stringpiece_.clear();
Expand Down Expand Up @@ -402,6 +465,12 @@ void CommandLine::AppendArgNative(const CommandLine::StringType& value) {
argv_.push_back(value);
}

#if defined(OS_MACOSX)
void CommandLine::FixOrigArgv4Finder(const CommandLine::StringType& value) {
original_argv_.push_back(value);
}
#endif

void CommandLine::AppendArguments(const CommandLine& other,
bool include_program) {
if (include_program)
Expand Down
15 changes: 15 additions & 0 deletions base/command_line.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,11 @@ class BASE_EXPORT CommandLine {

// Returns the original command line string as a vector of strings.
const StringVector& argv() const { return argv_; }
int argc0() { return argc0_; }
char** argv0() { return argv0_; }

// Returns the original command line string as a vector of strings (keeps precedence).
const StringVector& original_argv() const { return original_argv_; }

// Get and Set the program part of the command line string (the first item).
FilePath GetProgram() const;
Expand Down Expand Up @@ -200,6 +205,10 @@ class BASE_EXPORT CommandLine {
void AppendArgPath(const FilePath& value);
void AppendArgNative(const StringType& value);

#if defined(OS_MACOSX)
void FixOrigArgv4Finder(const StringType& value);
#endif

// Append the switches and arguments from another command line to this one.
// If |include_program| is true, include |other|'s program as well.
void AppendArguments(const CommandLine& other, bool include_program);
Expand Down Expand Up @@ -241,6 +250,9 @@ class BASE_EXPORT CommandLine {
// The argv array: { program, [(--|-|/)switch[=value]]*, [--], [argument]* }
StringVector argv_;

// The argv array (precedence not messed).
StringVector original_argv_;

// Parsed-out switch keys and values.
SwitchMap switches_;

Expand All @@ -252,6 +264,9 @@ class BASE_EXPORT CommandLine {

// The index after the program and switches, any arguments start here.
size_t begin_args_;

int argc0_;
char** argv0_;
};

} // namespace base
Expand Down
2 changes: 1 addition & 1 deletion base/files/file_util_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ std::string TempFileName() {
#if defined(GOOGLE_CHROME_BUILD)
return std::string(".com.google.Chrome.XXXXXX");
#else
return std::string(".org.chromium.Chromium.XXXXXX");
return std::string(".io.nwjs.XXXXXX");
#endif
}

Expand Down
3 changes: 3 additions & 0 deletions base/message_loop/message_loop.cc
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ std::unique_ptr<MessagePump> MessageLoop::CreateMessagePumpForType(Type type) {
return std::unique_ptr<MessagePump>(new MessagePumpForUI());
#endif

if (type == MessageLoop::TYPE_NODE)
return std::unique_ptr<MessagePump>(new MessagePumpUV());

DCHECK_EQ(MessageLoop::TYPE_DEFAULT, type);
return MESSAGE_PUMP_DEFAULT;
}
Expand Down
45 changes: 44 additions & 1 deletion base/message_loop/message_loop.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ class JavaMessageHandlerFactory;
} // namespace base
#endif // defined(OS_ANDROID)

#include "base/message_loop/message_pump_uv.h"

namespace base {

class ThreadTaskRunnerHandle;
Expand Down Expand Up @@ -107,14 +109,18 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate,
// TYPE_CUSTOM
// MessagePump was supplied to constructor.
//
// TYPE_NODE
// For integration with NodeJS/libuv in the renderer thread

enum Type {
TYPE_DEFAULT,
TYPE_UI,
TYPE_CUSTOM,
TYPE_IO,
#if defined(OS_ANDROID)
TYPE_JAVA,
#endif // defined(OS_ANDROID)
#endif // defined(OS_ANDROID)
TYPE_NODE
};

// Normally, it is not necessary to instantiate a MessageLoop. Instead, it
Expand Down Expand Up @@ -594,6 +600,43 @@ class BASE_EXPORT MessageLoopForIO : public MessageLoop {
static_assert(sizeof(MessageLoop) == sizeof(MessageLoopForIO),
"MessageLoopForIO should not have extra member variables");

#if !defined(OS_MACOSX)

//-----------------------------------------------------------------------------
// MessageLoopForUV extends MessageLoop with methods that are particular to a
// MessageLoop instantiated with TYPE_NODE.
//
// This class is typically used like so:
// MessageLoopForUV::current()->...call some method...
//

class BASE_EXPORT MessageLoopForUV : public MessageLoop {
public:

MessageLoopForUV() : MessageLoop(TYPE_NODE) {
}

// Returns the MessageLoopForUV of the current thread.
static MessageLoopForUV* current() {
MessageLoop* loop = MessageLoop::current();
//DCHECK_EQ(MessageLoop::TYPE_NODE, loop->type());
return static_cast<MessageLoopForUV*>(loop);
}

base::MessagePumpUV* pump_uv() {
return static_cast<base::MessagePumpUV*>(pump_.get());
}

};

// Do not add any member variables to MessageLoopForUV! This is important b/c
// MessageLoopForUV is often allocated via MessageLoop(TYPE_IO). Any extra
// data that you need should be stored on the MessageLoop's pump_ instance.
static_assert(sizeof(MessageLoop) == sizeof(MessageLoopForUV),
"MessageLoopForUV should not have extra member variables");

#endif

} // namespace base

#endif // BASE_MESSAGE_LOOP_MESSAGE_LOOP_H_

0 comments on commit 9a7251d

Please sign in to comment.